Postgresql 9.3-将.sql文件的输出导出为管道分隔的文本文件
我在(.sql)文件“Provider.sql”中有一个查询。问题是Postgresql 9.3-将.sql文件的输出导出为管道分隔的文本文件,sql,postgresql,postgresql-9.3,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 |弗雷泽|斯科特 我可以从“PGADMIN III”手动将输出导出到文件 然而,我想使用PSQL自动化这一点 将此.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 |弗雷泽|斯科特
我可以从“PGADMIN III”手动将输出导出到文件
然而,我想使用PSQL自动化这一点
将此.sql文件的输出发送到带有管道分隔符的文本文件的最佳方法是什么
你能帮我举个例子吗?
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
要写入文件,请重定向stdout,例如
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
更合适。为什么不能处理较大的查询?我有时使用\copy
进行非常复杂的查询。您也可以始终使用视图。至于输出被“损坏”。。。那么,你期望得到什么样的产出,它与你得到的有什么不同?请举一些例子。(编辑问题以添加它们,然后在此处发表评论)。@craig Ringer,我更新了我的问题,希望问题清楚