将多个 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>

如果连接信息正确,您将看到查询结果。