gpt4 book ai didi

sql - 从 PostgreSQL 将包含换行符的数据导出为 CSV

转载 作者:行者123 更新时间:2023-11-29 12:53:07 25 4
gpt4 key购买 nike

我正在尝试将数据从 postgresql 导出到 csv。

首先,我创建了查询并尝试使用文件 -> 导出到 CSV 从 pgadmin 导出。 CSV 是错误的,因为它包含例如:

标题:Field1;Field2;Field3;Field4

现在,行开始很好,除了它放在另一行的最后一个字段:

示例:

数据1;数据2;数据3;

数据4;

问题是我在尝试将数据导入另一台服务器时出错。

数据来 self 创建的 View 。

我也试过

COPY view(field1,field2...) TO 'C:\test.csv' DELIMITER ',' CSV HEADER;

它导出相同的文件。

我只想将数据导出到另一台服务器。

编辑:

尝试导入 csv 时出现错误:

ERROR : Extra data after the last expected column. Context Copy actions, line 3: <<"Data1, data2 etc.">>

enter image description here

所以第一行是标题,第二行是第一行数据减去最后一个字段,它单独在第三行。

最佳答案

为了将文件导出到另一台服务器,您有两种选择:

  • 在两台服务器之间创建共享文件夹,以便数据库也可以访问此目录。

COPY (SELECT field1,field2 FROM your_table) TO '[共享目录]'DELIMITER','CSV HEADER;

  • 使用 STDOUT 触发从目标服务器的导出复制。使用 psql 您可以运行以下命令来实现此目的命令:

psql yourdb -c "COPY (SELECT * FROM your_table) TO STDOUT"> output.csv

复制代码

编辑:解决包含换行的字段的问题 (\n)

如果您想去掉换行符,请使用 REPLACE 函数。

示例:

 SELECT E'foo\nbar';
?column?
----------
foo +
bar
(1 Zeile)

去除换行符:

SELECT REPLACE(E'foo\nbaar',E'\n','');
replace
---------
foobaar
(1 Zeile)

所以你的COPY应该是这样的:

COPY (SELECT field1,REPLACE(field2,E'\n','') AS field2 FROM your_table) TO '[shared directory]' DELIMITER ',' CSV HEADER;

关于sql - 从 PostgreSQL 将包含换行符的数据导出为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49486039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com