Pan*_*yal 35 database postgresql shell
我需要使用psql -c命令从命令行执行postgresql查询.对于每个psql命令,它会打开一个新的tcp连接以连接到数据库服务器并执行查询,这是大量查询的开销.
目前我可以像这样执行单个查询:
psql -U postgres -h <ip_addr> -c "SELECT * FROM xyz_table;"
Run Code Online (Sandbox Code Playgroud)
当我尝试执行如下的多个查询,但只执行了最后一个查询.
psql -U postgres -h <ip_addr> -c "SELECT * FROM xyz_table; SELECT * FROM abc_table;"
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我并告诉我正确的方法吗?
kel*_*tar 61
-c只处理一个命令.没有它,但是psql期望命令被传递到标准输入,例如:
psql -U postgres -h <ip_addr> <database_name> << EOF
SELECT * FROM xyz_table;
SELECT * FROM abc_table;
EOF
Run Code Online (Sandbox Code Playgroud)
或者通过使用echo和管道.
使用echo和管道将它装在一条线上:
echo 'SELECT * FROM xyz_table; \n SELECT * FROM abc_table' | psql -U postgres
Run Code Online (Sandbox Code Playgroud)
该--file参数执行文件的内容
psql -U postgres -h <ip_addr> -f "my_file.psql"
Run Code Online (Sandbox Code Playgroud)
所有输出都将发送到标准输出
http://www.postgresql.org/docs/current/static/app-psql.html
至少从9.6.2起,此方法也有效:
psql -c“选择现在()” -c“选择版本()” -U postgres -h 127.0.0.1
2017-12-26 20:25:45.874935 + 01(1行)
x86_64-pc-linux-gnu上的PostgreSQL 9.6.2,由gcc编译(Ubuntu 5.3.1-14ubuntu2)5.3.1 20160413,64位(1行)
| 归档时间: |
|
| 查看次数: |
37395 次 |
| 最近记录: |