【问题标题】:How to import empty strings as null values from CSV file - using pgloader?如何从 CSV 文件导入空字符串作为空值 - 使用 pgloader?
【发布时间】:2026-02-04 22:25:01
【问题描述】:

我正在使用 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 位)无法解析子表达式“;” 解析时

【问题讨论】:

    标签: postgresql csv pgloader


    【解决方案1】:

    使用字段选项:

    null if blanks
    

    类似这样的:

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

    来自documentation

    如果为空

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

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

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

    【讨论】: