带有两个 NULL 字符串的 PostgreSQL COPY CSV

PostgreSQL COPY CSV with two NULL strings

我有一个来自 Web 查询的 csv 文件源,其中包含一个字符串的两个变体,我想在复制到 PostgreSQL table 时将其 class 设为 NULL。

例如

COPY my_table FROM STDIN WITH CSV DELIMITER AS ',' NULL AS ('N/A', 'Not applicable'); 

我知道此查询会引发错误,所以我正在寻找一种方法来在 COPY CSV 查询中指定两个单独的 NULL 字符串?

我认为在这种情况下最好的选择是将 NULL 字符串参数设置为其中之一,因为 COPY 不支持多个 NULL 字符串,然后,全部加载完成后,执行 UPDATE 操作,将您希望将其他 NULL 字符串设置为实际 NULL 值的任何列中的值(确切的查询将取决于哪些列可以有那些值)。

如果你有一堆列,你可以在你的 SET 子句中使用 CASE 语句到 return NULL 如果它匹配你的特殊字符串,或者否则价值。 NULLIF 也可以使用(这样会更紧凑)。例如NULLIF(col1, 'Not applicable')