如何将导出的数据从Postgres分成CSV格式的不同选项卡?

时间:2016-06-20 23:33:40

标签: javascript sql postgresql csv stormpath

我正在尝试将数据从Postgres导出到CSV,以便我可以将其导入到stormpath,这需要:

  

“它还要求CSV文件包含列:

     
      
  • 用户名
  •   
  • 电子邮件
  •   
  • GIVEN_NAME
  •   
  •   
  • custom_data
  •   
     

它要求CSV文件包含逗号分隔的字段和引用的字段       带管道字符|。“

到目前为止,我能够从Postgres导出数据,但我无法使用“|”分隔多个标签中的数据作为分隔符。

将数据与不可见的','分隔为分隔符,并将数据分布在各自键下的选项卡中

\COPY (SELECT * FROM servicers) TO '/Users/V/Desktop/s.csv' DELIMITER ',' CSV HEADER;

用'|'分隔数据作为分隔符,但将所有数据保存在一个选项卡中而不是单个选项卡

\COPY (SELECT * FROM servicers) TO '/Users/V/Desktop/s.csv' DELIMITER '|' CSV HEADER;

4 个答案:

答案 0 :(得分:1)

您引用的规则是:

  

它要求CSV文件包含以逗号分隔的字段,以及使用竖线字符引用的字段。

但是你的例子只是修改分隔符,而不是引用字符。

尝试类似

的内容
COPY servicers TO '/Users/V/Desktop/s.csv' WITH (FORMAT CSV, HEADER, QUOTE '|');

FORMAT CSV暗示DELIMITER ',',因此应满足第一个要求。 QUOTE '|'应该满足第二个。

答案 1 :(得分:0)

this is what appears now

这是现在出现的,虽然我使用了上面的代码

COPY服务商TO'/Users/V/Desktop/s.csv'WITH(FORMAT CSV,HEADER,QUOTE'|');

答案 2 :(得分:0)

enter image description here

这是\ COPY的结果(选择*来自服务商,其中id = 36)TO' /Users/V/Desktop/nw.csv' WITH(FORMAT CSV,HEADER,QUOTE' |');

答案 3 :(得分:0)

根据您使用的Postgres版本,您应该可以这样做:

\copy (select * from tester) to '/tmp/test.csv' with delimiter '|' csv header force quote *

这将使用正确的分隔符,并引用字符。您可以在Postgres COPY文档页面上找到有关此内容的更多信息:https://www.postgresql.org/docs/9.2/static/sql-copy.html

script期望CSV文件如下所示:

|username|,|FirstName|,|LastName|,|email@email.com.com|,|{"address": "some address", "scraped_data": "blah"}|

另请注意,此脚本是开源的,因此可以根据需要随意更改!