从PostgreSQL数据库保存PL/pgSQL输出到CSV文件的最简单的方法是什么?

我使用PostgreSQL 8.4 pgAdmin III和PSQL插件,我从那里运行查询。


当前回答

从Postgres 12开始,你可以改变输出格式:

\pset format csv

允许使用以下格式:

aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped

如果要导出请求的结果,可以使用\o文件名特性。

例子:

\pset format csv

\o file.csv
SELECT * FROM table LIMIT 10;
\o

\pset format aligned

其他回答

在pgAdmin III中,有一个从查询窗口导出到文件的选项。在主菜单中,它是Query -> Execute to file或者有一个按钮做同样的事情(它是一个带有蓝色软盘的绿色三角形,而不是仅仅运行查询的普通绿色三角形)。如果您没有从查询窗口运行查询,那么我将按照IMSoP的建议使用复制命令。

PSQL可以帮你做到这一点:

edd@ron:~$ psql -d beancounter -t -A -F"," \
                -c "select date, symbol, day_close " \
                   "from stockprices where symbol like 'I%' " \
                   "and date >= '2009-10-02'"
2009-10-02,IBM,119.02
2009-10-02,IEF,92.77
2009-10-02,IEV,37.05
2009-10-02,IJH,66.18
2009-10-02,IJR,50.33
2009-10-02,ILF,42.24
2009-10-02,INTC,18.97
2009-10-02,IP,21.39
edd@ron:~$

有关此处使用的选项的帮助,请参阅man psql。

如果你有更长的查询,你喜欢使用psql,然后把你的查询到一个文件,并使用以下命令:

psql -d my_db_name -t -A -F";" -f input-file.sql -o output-file.csv

下载列名为HEADER的CSV文件使用以下命令:

Copy (Select * From tableName) To '/tmp/fileName.csv' With CSV HEADER;

在终端(当连接到db时)将输出设置为cvs文件

1)设置字段分隔符为',':

\f ','

2)设置输出格式不对齐:

\a

3)只显示元组:

\t

4)设定输出:

\o '/tmp/yourOutputFile.csv'

5)执行查询:

:select * from YOUR_TABLE

6)输出:

\o

然后,您将能够在这个位置找到您的csv文件:

cd /tmp

使用scp命令复制或使用nano编辑:

nano /tmp/yourOutputFile.csv