我正在尝试通过命令行将带有 Headers 的PostgreSQL表导出到CSV文件,但是我将其导出到CSV文件但没有 Headers . 我也需要那些 Headers . 我的代码如下所示
COPY products_273 to '/tmp/products_199.csv' delimiters',';
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
如manual中所述 .
从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,它将是这样的:
以下是我如何使用pgsl连接到Heroku PG数据库的工作电源shell:
我必须先将客户端编码更改为utf8,如下所示: \encoding UTF8
\encoding UTF8
然后将数据转储到CSV文件:
\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'
我使用〜作为分隔符因为我不允许添加'\t'作为分隔符,所以我使用了 ~ 因为它是一个很少使用的characeter .
这个解决方案使用 \copy 为我工作 .
\copy
psql -h <host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"
将(anysql query datawanttoexport)复制到'fileablsoutepathwihname'分隔符','csv header;
使用它你也可以导出数据 .
9 回答
如manual中所述 .
从psql命令行:
最后没有分号 .
而不仅仅是表名,您还可以编写查询以仅获取选定的列数据 .
具有管理员权限
当我没有从Postgres写出文件的权限时,我发现我可以从命令行运行查询 .
这有效
对于我使用的版本9.5,它将是这样的:
以下是我如何使用pgsl连接到Heroku PG数据库的工作电源shell:
我必须先将客户端编码更改为utf8,如下所示:
\encoding UTF8
然后将数据转储到CSV文件:
我使用〜作为分隔符因为我不允许添加'\t'作为分隔符,所以我使用了 ~ 因为它是一个很少使用的characeter .
这个解决方案使用
\copy
为我工作 .将(anysql query datawanttoexport)复制到'fileablsoutepathwihname'分隔符','csv header;
使用它你也可以导出数据 .