从PostgreSQL数据库保存PL/pgSQL输出到CSV文件的最简单的方法是什么?
我使用PostgreSQL 8.4 pgAdmin III和PSQL插件,我从那里运行查询。
从PostgreSQL数据库保存PL/pgSQL输出到CSV文件的最简单的方法是什么?
我使用PostgreSQL 8.4 pgAdmin III和PSQL插件,我从那里运行查询。
当前回答
下载列名为HEADER的CSV文件使用以下命令:
Copy (Select * From tableName) To '/tmp/fileName.csv' With CSV HEADER;
其他回答
下载列名为HEADER的CSV文件使用以下命令:
Copy (Select * From tableName) To '/tmp/fileName.csv' With CSV HEADER;
新版本- psql 12 -将支持——csv。
PSQL - devel ——csv 切换到CSV(逗号分隔值)输出模式。这相当于\pset格式的csv。 csv_fieldsep 指定在CSV输出格式中使用的字段分隔符。如果分隔符出现在字段的值中,该字段将以双引号输出,遵循标准CSV规则。默认值是逗号。
用法:
psql -c "SELECT * FROM pg_catalog.pg_tables" --csv postgres
psql -c "SELECT * FROM pg_catalog.pg_tables" --csv -P csv_fieldsep='^' postgres
psql -c "SELECT * FROM pg_catalog.pg_tables" --csv postgres > output.csv
如果你有更长的查询,你喜欢使用psql,然后把你的查询到一个文件,并使用以下命令:
psql -d my_db_name -t -A -F";" -f input-file.sql -o output-file.csv
从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
如果您对特定表的所有列以及标题感兴趣,则可以使用
COPY table TO '/some_destdir/mycsv.csv' WITH CSV HEADER;
这稍微简单一点
COPY (SELECT * FROM table) TO '/some_destdir/mycsv.csv' WITH CSV HEADER;
据我所知,两者是等价的。