如何在Postgresql上将表导出为带标题的CSV?

我试图通过命令行将一个带标题的PostgreSQL表导出到CSV文件,但是我得到的是导出到CSV文件,但没有标题。

我的代码如下。

COPY products_273 to '/tmp/products_199.csv' delimiters',';
对该问题的评论 (4)
解决办法
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

如[手册]中所述(http://www.postgresql.org/docs/current/static/sql-copy.html)。

评论(16)

从psql命令行。

\COPY my_table TO 'filename' CSV HEADER

后面没有分号。

评论(12)

你也可以写一个查询,而不是只写表名,你也可以写一个查询,只获取选定的列数据。

COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

有管理权限

\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
评论(3)

当我没有权限从Postgres中写出一个文件时,我发现我可以在命令行中运行查询。

psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv
评论(1)

这个工作

psql dbname -F , --no-align -c "SELECT * FROM TABLE"
评论(4)

对于我使用的9.5版本,应该是这样的。

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
评论(0)

我用copy解决了这个问题。

psql -h  -U  -d  -c "\copy  FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"
评论(0)

Heres how I got it working power shell using pgsl connnect to a Heroku PG database:

我必须先把客户端编码改为utf8,像这样: /encoding UTF8

然后把数据转储到一个CSV文件中,这样。

\copy (SELECT * FROM my_table) TO  C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'

我用 ~ 作为分隔符是因为我不喜欢 CSV 文件,我通常使用 TSV 文件,但它不会让我添加 't/39; 作为分隔符,所以我用了~,因为它是一个很少使用的字符。

评论(0)

复制(ansql查询datawanttoexport)到'fileablsoutepathwihname&#39。 delimiter ',&#39。 csv头。

使用这个u也可以导出数据。

评论(0)

我把这个答案贴出来,因为这里给出的其他答案对我来说都不起作用。 我不能在Postgres中使用COPY,因为我没有正确的权限。 所以我选择了"导出网格行&quot。 并将输出保存为UTF-8。

@Brian给出的psql版本也没有为我工作,原因不同。 它不工作的原因是显然Windows命令提示符(我使用的是Windows)在自己的编码上做了手脚。 我一直得到这个错误。

ERROR.字符的字节序列为0x81。 字符与字节序列0x81在编码"WIN1252&quot。 在编码"UTF8&quot中没有等价字符。

我最终使用的解决方案是写一个简短的JDBC脚本(Java),它读取CSV文件并直接向我的Postgres表发出插入语句。 这样就成功了,但如果不改变编码的话,命令提示符也能用。

评论(0)

最简单的方法(使用psql)似乎是使用--csv标志。

psql --csv -c "SELECT * FROM products_273"
>
&#39;/tmp/products_199.csv&#39;
评论(0)