You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行修改PostgreSQL查询输出分隔符为逗号以生成正确INSERT语句?

解决方法

问题根源在于你的SQL查询把INSERT语句拆成了多个列返回,psql会自动用分隔符(默认竖线,你指定了逗号)分隔这些列,导致输出格式混乱。正确的做法是让查询直接生成完整的单字符串INSERT语句,不需要依赖psql的分隔符参数。

修正SQL查询语句

将原来的查询修改为:

select 'insert into my_table values(''' || :HOST || ''',' || inet_server_port() || ',''' || current_database() || ''',''' || txt_sample || ''');' from spec_table;

关键修改点:

  • 用||替代逗号,把所有部分拼接成一个完整字符串
  • 对字符串类型的字段(主机名、数据库名、txt_sample)添加转义单引号'',确保生成的INSERT语句中这些值被单引号包裹
  • 数字类型的inet_server_port()不需要加单引号

调整psql命令(可选)

因为现在查询返回的是单列,-F ','参数已经没用了,可以去掉,简化后的命令:

PGPASSWORD="$pass" /usr/bin/psql -P pager=off -q -t -h "$i" -p "$j" -U "$user" -d "$k" -f /appl/my_folder/first_select.sql >> /appl/my_folder/first_result.txt

这样执行后,输出的INSERT语句就会符合你期望的格式:

insert into mytable values('host name',5432,'database name','text sample 00:00:00');

内容的提问来源于stack exchange,提问作者Diogo dos Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:32:46