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

如何修改PostgreSQL psql输出字段分隔符为逗号(Windows批处理)

问题描述

我在Windows批处理文件中使用Postgres psql执行以下命令:

psql -h %hostip% -p %port% -d %%a -U %username% -t -c "select table_catalog,table_schema,table_name from information_schema.tables" -o out.txt

当前out.txt中数据默认以|作为字段分隔符,格式如下:

mydb      | public       | table1
 mydb      | public       | table2
 mydb      | public       | table3

我需要将输出改为以逗号分隔的格式:

mydb,public,table1
 mydb,public,table2
 mydb,public,table3

尝试过使用-F、--field-separator参数但未生效,请问还有什么方法可以修改默认分隔符?

解决方法

方法1:搭配-A与-F参数

单独使用-F参数无效是因为你开启了对齐输出模式,Postgres会用固定宽度和|分隔符格式化内容,忽略字段分隔符设置。需要添加-A参数关闭对齐模式,修改后的命令如下:

psql -h %hostip% -p %port% -d %%a -U %username% -t -A -F "," -c "select table_catalog,table_schema,table_name from information_schema.tables" -o out.txt
  • -A:禁用对齐输出,切换为紧凑的字段分隔模式
  • -F ",":指定逗号作为字段分隔符

方法2:在SQL查询中直接拼接结果

如果参数设置仍有问题,可以直接在SELECT语句里拼接字段,生成天然的逗号分隔格式:

psql -h %hostip% -p %port% -d %%a -U %username% -t -c "select concat(table_catalog, ',', table_schema, ',', table_name) from information_schema.tables" -o out.txt

若字段值可能包含逗号,建议用quote_literal包裹字段避免格式混乱:

psql -h %hostip% -p %port% -d %%a -U %username% -t -c "select concat_ws(',', quote_literal(table_catalog), quote_literal(table_schema), quote_literal(table_name)) from information_schema.tables" -o out.txt

方法3:用批处理命令替换分隔符

如果不想修改psql命令,可在生成out.txt后,用PowerShell替换掉|及前后空格:

powershell -Command "(Get-Content out.txt) -replace '\s+\|\s+', ',' | Set-Content out.txt"

内容的提问来源于stack exchange,提问作者usersam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:28:14