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

我的代码如下所示:

COPY products_273 to '/tmp/products_199.csv' delimiters',';
有帮助吗?

解决方案

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

如href="http://www.postgresql.org/docs/current/static/sql-copy.html" rel="noreferrer">手册中

其他提示

从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;

当我没有权限从Postgres的写入文件出来我发现我可以运行在命令行查询。

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

此工作

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

有关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 ',');"

下面有我怎样得到的使用pgsl connnect到Heroku的PG数据库工作电源壳:

我不得不先更改客户端编码UTF8这样的:\encoding UTF8

然后,将数据转储到一个CSV文件这样的:

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

我用〜作为分隔符,因为我不喜欢CSV文件,我通常使用TSV文件,但它不会让我添加“\ t”作为分隔符,所以我用的,因为它很少使用characeter。

拷贝(anysql查询datawanttoexport)为 'fileablsoutepathwihname' 分隔符 '' CSV标题;

使用本u能也导出数据。

我张贴这个答案,因为没有这里给出其他的答案居然为我工作。我不能使用COPY从内部Postgres的,因为我没有正确的权限。所以选择“导出网格行”并保存的输出作为UTF-8。

这是@布赖恩给出的psql版本还没有为我工作,出于不同的原因。它不工作的原因是显然的Windows命令提示符(我使用的是Windows)与自身的编码插手左右。我一直得到此错误:

  

错误:在编码序列的字节0×81“WIN1252”字符不具有等效于编码“UTF8”

我结束了使用的解决方案是写一个读取CSV文件并发出INSERT语句直接进入我的Postgres表短JDBC脚本(爪哇)。这个工作,但命令提示也会工作,如果不是因为改变编码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top