我需要使用psql -c命令从命令行执行postgresql查询。对于每个psql命令,它都会打开一个新的tcp连接来连接到数据库服务器并执行查询,这对于大量的查询来说是一个开销。
目前我可以像这样执行单个查询:
psql -U postgres -h <ip_addr> -c "SELECT * FROM xyz_table;"
当我尝试执行多个查询如下,但只有最后一个查询得到执行。
psql -U postgres -h <ip_addr> -c "SELECT * FROM xyz_table; SELECT * FROM abc_table;"
谁能帮帮我,告诉我做这件事的正确方法?
5条答案
按热度按时间f0brbegy1#
-c
只处理一个命令。但是,如果没有它,psql
期望命令被传递到标准输入,例如:或者使用
echo
和管道。ghhkc1vu2#
至少从9.6.2开始,该方法也起作用:
psql -c“立即选择()”-c“选择版本()”-U postgres -127.0.0.1
现在
2017年12月26日20:25:45.874935+01(一行)
版本
基于x86_64-pc-linux-gnu的PostgreSQL 9.6.2,由gcc编译(Ubuntu 5.3.1- 14 ubuntu 2)5.3.1 20160413,64位(1行)
relj7zay3#
使用
echo
和管道将其安装在一条直线上:cpjpxq1n4#
--file
参数执行文件的内容所有输出将发送到标准输出
http://www.postgresql.org/docs/current/static/app-psql.html
iih3973s5#
“clean”解决方案是传递多个
-c
选项:显著获益:你可以这样使用反斜线命令,例如
\x
。(@leo-y在评论中指出了这一点)