我正在尝试通过命令行将带有标题的 PostgreSQL 表导出到 CSV 文件,但是我让它导出到 CSV 文件,但没有标题。
我的代码如下所示:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
我正在尝试通过命令行将带有标题的 PostgreSQL 表导出到 CSV 文件,但是我让它导出到 CSV 文件,但没有标题。
我的代码如下所示:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
如手册中所述。
从 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);
最简单的方法(使用psql
)似乎是使用--csv
标志:
psql --csv -c "SELECT * FROM products_273" > '/tmp/products_199.csv'
这个解决方案对我有用\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 连接到 Heroku PG 数据库的电源外壳:
我必须首先将客户端编码更改为 utf8,如下所示:\encoding UTF8
然后将数据转储到 CSV 文件中:
\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'
我用 ~ 作为分隔符,因为我不喜欢 CSV 文件,我通常使用 TSV 文件,但它不会让我添加 '\t' 作为分隔符,所以我使用~因为它是一个很少使用的字符。
COPY命令不受限制。受到限制的是将输出从TO定向到除STDOUT之外的任何地方。但是,通过\o命令指定输出文件没有任何限制。
\o '/tmp/products_199.csv';
COPY products_273 TO STDOUT WITH (FORMAT CSV, HEADER);
复制(anysql 查询 datawanttoexport)到 'fileablsoutepathwihname' delimiter ',' csv header;
使用这个你也可以导出数据。
我发布这个答案是因为这里给出的其他答案都没有真正对我有用。我无法COPY
在 Postgres 中使用,因为我没有正确的权限。所以我选择了“导出网格行”并将输出保存为 UTF-8。
@Brian 给出的psql
版本也对我不起作用,原因不同。它不起作用的原因显然是 Windows 命令提示符(我使用的是 Windows)正在自行干预编码。我不断收到此错误:
错误:编码“WIN1252”中字节序列为 0x81 的字符在编码“UTF8”中没有等效项
我最终使用的解决方案是编写一个简短的 JDBC 脚本 (Java),它读取 CSV 文件并将插入语句直接发送到我的 Postgres 表中。这行得通,但如果它没有改变编码,命令提示符也可以工作。
试试这个:“复制 products_273 FROM '\tmp\products_199.csv'DELIMITER ',' CSV HEADER”
在pgAdmin
中,突出显示您的查询语句,就像您使用F5
执行并按下时一样F9
- 这将打开文件浏览器,以便您可以选择保存 CSV 的位置。
如果您使用的是 Azure Data Studio,请参阅此处的说明:Azure Data Studio:另存为 CSV。
我知道这不是一个通用的解决方案,但大多数时候你只想手动抓取文件。