使用批处理脚本将管道分隔的csv转换为制表符分隔符

时间:2011-12-15 02:47:12

标签: postgresql batch-file

我正在尝试编写一个批处理脚本,它将查询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

1 个答案:

答案 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对齐
  切换到未对齐的输出模式。 (否则,默认输出模式将对齐。)