Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 9.3-将.sql文件的输出导出为管道分隔的文本文件_Sql_Postgresql_Postgresql 9.3 - Fatal编程技术网

Postgresql 9.3-将.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文件的输出发送到带有管道分隔符的文本文件的最

我在(.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文件的输出发送到带有管道分隔符的文本文件的最佳方法是什么


你能帮我举个例子吗?

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,我更新了我的问题,希望问题清楚