Postgresql 9.3 - 将.sql文件的输出导出到管道分隔的文本文件

时间:2014-08-12 14:28:02

标签: sql postgresql postgresql-9.3

我在(.sql)文件中有一个查询" Provider.sql" 。查询是,

select 
P.ID AS P_ID,
P.LASTNAME AS L_N,
P.FIRST_NAME AS F_N,
FROM 
PROVIDER P

如何导出此" Provider.sql"的输出?提交给' |'分隔文本文件?

  

P_ID | L_N | F_N    1个| FRASER | SCOTT

我可以从" PGADMIN III"手动将输出导出到文件。

但是我想使用PSQL自动执行此操作。

将此.sql文件的输出发送到带有分隔符的文本文件的最佳方法是什么?

你能帮我举个例子吗?

1 个答案:

答案 0 :(得分:2)

psql可以本地执行您想要的操作 - 只需在安静,不对齐,仅元组模式下运行它:

$ psql -qAt -F '|' -c 'SELECT x, x FROM generate_series(1,10) x;'
1|1
2|2
3|3
4|4
5|5
6|6
7|7
8|8
9|9
10|10

如果要将记录分隔符从换行更改为其他内容,请使用-R

要写入文件,请重定向标准输出,例如

psql -qAt -F '|' -c 'SELECT x, x FROM generate_series(1,10) x;' > output.csv

或使用-o

psql -qAt -F '|' -o output.csv -c 'SELECT x, x FROM generate_series(1,10) x;'

但是,一般来说\copy更合适。