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

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

我的代码如下:

COPY products_273 to '/tmp/products_199.csv' delimiters',';
492441 次浏览
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

手册中所述。

这是

psql dbname -F , --no-align -c "SELECT * FROM TABLE"

从psql命令行:

\COPY my_table TO 'filename' CSV HEADER

结尾没有分号。

除了表名之外,还可以编写查询来只获取选定的列数据。

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;

复制(anyql查询datawanttoexport)到' fileablsoutepathwiname '分隔符',' CSV头;

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

下面是我是如何使用pgsl连接到Heroku PG数据库的:

我必须首先将客户端编码更改为utf8,就像这样:\encoding UTF8

然后将数据转储到CSV文件:

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

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

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

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

对于我使用的9.5版本,它是这样的:

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

这个解决方案适用于我使用\copy

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

我之所以发布这个答案,是因为这里给出的其他答案都不适合我。我不能从Postgres中使用COPY,因为我没有正确的权限。所以我选择“Export grid rows”并将输出保存为UTF-8。

@Brian给出的psql版本也不适合我,因为不同的原因。它不起作用的原因显然是Windows命令提示符(我使用的是Windows)自己干扰了编码。我一直得到这个错误:

错误:字节序列为0x81的字符在编码“WIN1252”时没有对应的编码“UTF8”

我最终使用的解决方案是编写一个简短的JDBC脚本(Java),读取CSV文件并直接向Postgres表发出插入语句。这是可行的,但是如果没有改变编码,命令提示符也可以工作。

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

psql --csv -c "SELECT * FROM products_273" > '/tmp/products_199.csv'
< p >试试这个: "COPY products_273 FROM \tmp\products_199.csv' DELIMITER ',' CSV HEADER"

. CSV

<强>复制< / >强命令不是受限制的。限制的是将<强> < / >强的输出指向除< >强STDOUT < / >强之外的任何地方。然而,通过<强> \ o < / >强命令指定输出文件没有限制。

\o '/tmp/products_199.csv';
COPY products_273 TO STDOUT WITH (FORMAT CSV, HEADER);

pgAdmin中,突出显示您的查询语句,就像使用F5执行时一样,并按F9 -这将打开文件浏览器,以便您可以选择保存CSV的位置。

如果你正在使用Azure Data Studio,指令在这里:Azure Data Studio:另存为CSV

我知道这不是一个通用的解决方案,但大多数时候您只是想手动获取文件。