我正在尝试编写一个批处理脚本来查询 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 = 数据库
最佳答案
你应该使用 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-align
Switches to unaligned output mode. (The default output mode is otherwise aligned.)
关于postgresql - 使用批处理脚本将管道分隔的 csv 转换为制表符分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514503/