我想从shell(不在交互式psql客户端)执行查询,并将输出的CSV或TSV表示打印到STDOUT.你是如何使用psqlPostgreSQL或其中一个PostgreSQL命令行工具的?
Mat*_*ood 95
如果您使用的是PostgreSQL 8.2或更高版本,请将其用于CSV:
psql -c "COPY (<select query>) TO STDOUT WITH CSV"
Run Code Online (Sandbox Code Playgroud)
这个TSV,有正确的NULL:
psql -c "COPY (<select query>) TO STDOUT WITH NULL AS ''"
Run Code Online (Sandbox Code Playgroud)
CSV表单将正确引用包含双引号字符的任何字段.有关COPY的更多详细信息和选项,请参阅特定版本的PostgreSQL文档.
Jas*_*tta 38
从波西米亚的答案开始,我发现这些标志很有用:
psql my_database -U myuser -A -F , -X -t -f /path/to/query.sql -o /path/to/output.csv
Run Code Online (Sandbox Code Playgroud)
最简单的方法(使用psql)似乎是使用--csv标志:
psql --csv -c "SELECT * FROM sometable"
Run Code Online (Sandbox Code Playgroud)
编辑:使用-F
使用逗号via -F并使用"unaligned table output mode" -A:
psql my_database -U myuser -A -F , -c "select * from mytable"
Run Code Online (Sandbox Code Playgroud)
小智 5
要指定tsv,请使用定界符'\ t'
psql my_database -U myuser -F'\t' --no-align -f mysqlfile.sql -o outputfile.tsv
Run Code Online (Sandbox Code Playgroud)
要指定csv,请使用定界符','
psql my_database -U myuser -F',' --no-align -f mysqlfile.sql -o outputfile.csv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43093 次 |
| 最近记录: |