【问题标题】:Pipe multiple SQL commands to psql CLI将多个 SQL 命令通过管道传输到 psql CLI
【发布时间】:2020-07-29 18:29:14
【问题描述】:

我有一组通过管道组合在一起的 linux 应用程序

some_application | awk '{print "INSERT INTO my_table VALUES (\x27" $2 "\x27," $3 ")"'

其输出将是一系列 SQL INSERT 命令:

INSERT INTO my_table VALUES ('foo',42)
INSERT INTO my_table VALUES ('bar',43)

如何将这些多条命令通过管道传送到psql

a similar question 回答了如何使用 psql 的 -c 参数执行单个命令。但是这个答案对我的场景来说并不理想,因为它需要为每个命令建立一个新的连接;我宁愿设置一个连接,然后通过该会话通过管道传输所有命令。

提前感谢您的考虑和回复。

【问题讨论】:

  • 看看-c command 下的示例Here 看看是否可行。

标签: postgresql pipe command-line-interface sql-insert


【解决方案1】:

您可以将其直接通过管道传递到psql,但您需要为每行添加分号终止符。

some_application | awk '{print "INSERT INTO my_table (\'" $2 "\'," $3 ");"' | psql <your connection switches>

你可以通过做一些无害的事情来测试你的连接参数:

echo "select count(*) from pg_tables;" | psql <your parms>

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

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 2018-08-18
    • 1970-01-01
    • 2019-08-17
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多