将多个 SQL 命令传送到 psql CLI
Pipe multiple SQL commands to psql CLI
我有一组 linux 应用程序正在通过管道组合在一起
some_application | awk '{print "INSERT INTO my_table VALUES (\x27" "\x27," ")"'
其输出将是一系列 SQL INSERT
命令:
INSERT INTO my_table VALUES ('foo',42)
INSERT INTO my_table VALUES ('bar',43)
如何将这些多个命令传送到 psql
?
a similar question 回答了如何使用 psql 的 -c
参数执行单个命令。但是这个答案对我的场景来说并不理想,因为它需要为每个命令建立一个新的连接;我更愿意设置一个连接,然后通过该会话传输所有命令。
提前感谢您的考虑和回复。
您可以直接将其通过管道传输到 psql
,但每行都需要分号终止符。
some_application | awk '{print "INSERT INTO my_table (\'" "\'," ");"' | psql <your connection switches>
您可以通过做一些无害的事情来测试您的连接参数:
echo "select count(*) from pg_tables;" | psql <your parms>
如果连接信息正确,您将看到查询结果。
我有一组 linux 应用程序正在通过管道组合在一起
some_application | awk '{print "INSERT INTO my_table VALUES (\x27" "\x27," ")"'
其输出将是一系列 SQL INSERT
命令:
INSERT INTO my_table VALUES ('foo',42)
INSERT INTO my_table VALUES ('bar',43)
如何将这些多个命令传送到 psql
?
a similar question 回答了如何使用 psql 的 -c
参数执行单个命令。但是这个答案对我的场景来说并不理想,因为它需要为每个命令建立一个新的连接;我更愿意设置一个连接,然后通过该会话传输所有命令。
提前感谢您的考虑和回复。
您可以直接将其通过管道传输到 psql
,但每行都需要分号终止符。
some_application | awk '{print "INSERT INTO my_table (\'" "\'," ");"' | psql <your connection switches>
您可以通过做一些无害的事情来测试您的连接参数:
echo "select count(*) from pg_tables;" | psql <your parms>
如果连接信息正确,您将看到查询结果。