我正在尝试编写一个批处理脚本,它将查询Postgres数据库并将结果输出到csv。目前,它查询数据库并将输出保存为管道分隔的csv。
我希望输出是制表符分隔而不是管道分隔,因为我最终会将csv导入Access。有谁知道如何实现这一目标?
当前代码:
cd C:\Program Files\PostgreSQL\9.1\bin
psql -c "SELECT * from jivedw_day;" -U postgres -A -o sample.csv cscanalytics
postgres =用户名 cscanalytics = database
答案 0 :(得分:4)
您应该使用COPY转储CSV:
psql -c "copy jivedw_day to stdout csv delimiter E'\t'" -o sample.csv -U postgres -d csvanalytics
delimiter E'\t'
部分会以标签而非逗号作为分隔符为您输出输出。还有其他选项,请参阅the documentation了解更多详情。
使用-A
like you are只是将通常的交互式输出转储到sample.csv
而没有正常的填充以使列排成一行,这就是你看到管道的原因:
-A
--no对齐
切换到未对齐的输出模式。 (否则,默认输出模式将对齐。)