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

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


当前回答

有几种解决方案:

1 PSQL命令

psql -d dbname -t -A -F"," -c "select * from users" > output.csv

这有一个很大的优势,您可以通过SSH使用它,如SSH postgres@host命令-使您能够获得

2 postgres copy命令

拷贝(SELECT * from users)到'/tmp/output.csv'

PSQL交互(或不交互)

>psql dbname
psql>\f ','
psql>\a
psql>\o '/tmp/output.csv'
psql>SELECT * from users;
psql>\q

它们都可以在脚本中使用,但我更喜欢第1种。

4 pgadmin,但这是不可编写脚本的。

其他回答

有几种解决方案:

1 PSQL命令

psql -d dbname -t -A -F"," -c "select * from users" > output.csv

这有一个很大的优势,您可以通过SSH使用它,如SSH postgres@host命令-使您能够获得

2 postgres copy命令

拷贝(SELECT * from users)到'/tmp/output.csv'

PSQL交互(或不交互)

>psql dbname
psql>\f ','
psql>\a
psql>\o '/tmp/output.csv'
psql>SELECT * from users;
psql>\q

它们都可以在脚本中使用,但我更喜欢第1种。

4 pgadmin,但这是不可编写脚本的。

JackDB是web浏览器中的一个数据库客户端,它让这一切变得非常简单。特别是如果你在Heroku。

它允许您连接到远程数据库并在其上运行SQL查询。

                                                                                                                                                        源 (来源:jackdb.com)


一旦连接了数据库,就可以运行查询并导出到CSV或TXT(见右下角)。


注:我与JackDB没有任何关联。我目前使用他们的免费服务,认为这是一个很棒的产品。

我写了一个叫做psql2csv的小工具,它封装COPY查询TO STDOUT模式,生成合适的CSV。它的接口类似于psql。

psql2csv [OPTIONS] < QUERY
psql2csv [OPTIONS] QUERY

查询被假定为STDIN的内容(如果存在)或最后一个参数。所有其他参数都被转发到psql,除了以下参数:

-h, --help           show help, then exit
--encoding=ENCODING  use a different encoding than UTF8 (Excel likes LATIN1)
--no-header          do not output a header

我尝试了几件事,但很少有人能够给我所需的CSV与头细节。

以下是对我有效的方法。

psql -d dbame -U username \
  -c "COPY ( SELECT * FROM TABLE ) TO STDOUT WITH CSV HEADER " > \
  OUTPUT_CSV_FILE.csv

在终端(当连接到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