2

我正在使用pgloader从 .csv 文件中导入,该文件在双引号中包含空字符串。采样线是

12334,0,"MAIL","CA","","Sanfransisco","TX","","",""

成功导入后,带有双引号(“”)的字段在 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 位)无法解析子表达式“;” 解析时

4

1 回答 1

0

使用字段选项:

null if blanks

像这样的东西:

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

文档中:

空如果

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

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

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

于 2016-02-04T07:13:41.653 回答