如何从CSV文件中将空字符串作为空值导入 - 使用pgloader?

时间:2016-02-04 06:44:58

标签: postgresql csv pgloader

我正在使用 pgloader 从.csv文件导入,该文件在双引号中有空字符串。样本行是

  

12334,0," MAIL"" CA"""" Sanfransisco"" TX&#34 ;,""""""

导入成功后,带有双引号("")的字段在postgres数据库中显示为两个单引号('')。

我们是否可以插入空字符串或空字符串代替两个单引号('')?

我正在使用参数 -

WITH truncate,
           fields optionally enclosed by '"',
           fields escaped by double-quote,
           fields terminated by ','
SET client_encoding to 'UTF-8',
           work_mem to '12MB',
           standard_conforming_strings to 'on'

我尝试使用' empty-string-to-null'在这样的文档中提到 -

CAST column enumerate.fax using empty-string-to-null

但它给我一个错误说 -

  

pgloader nph_opr_addr.test.load一个未处理的错误情况   信号:在LOAD CSV

     

^(第1行,第0列,第0位)无法解析子表达式";"   解析时

1 个答案:

答案 0 :(得分:0)

使用字段选项:

null if blanks

这样的事情:

...
having fields foo, bar, mynullcol null if blanks, baz

来自documentation

  

如果

,则为null      

此选项接受一个参数,该参数可以是关键字空格或双引号字符串。

     

当使用空白并且读取的字段值仅包含空格字符时,它会自动转换为SQL NULL值。

     

当使用双引号字符串并将该字符串作为字段值读取时,字段值将自动转换为SQL NULL值