Vertica 复制语句 - 具有多个空字符串的空参数

Vertica Copy Statement - Null Parameter with Multiple Null Strings

我正在尝试将竖线分隔的文本文件导入 Vertica 中的 table。 NULL在文本文件中的字符串表示是“[NULL]”。但是,该文件的问题是许多带有 NULL 的字段也有尾随空格。

https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/COPY/COPYParameters.htm

看起来当然不可能,但是有什么方法可以将正则表达式传递给 null 参数吗?

除了一堆 post COPY 更新之外还有其他想法吗?

在 COPY 语句中使用转换,如在这种情况下:

DROP TABLE IF EXISTS foo;
CREATE TABLE foo (
  id   INT
, nam  VARCHAR(32)
, dob  DATE
)
;
COPY foo (
  id
, nam_in FILLER VARCHAR
, nam AS CASE WHEN TRIM(nam_in) <> '[NULL]' THEN nam_in END
, dob_in FILLER VARCHAR
, dob AS CASE WHEN TRIM(dob_in) <> '[NULL]' THEN dob_in::DATE END
)
FROM STDIN DELIMITER '|' ;
    42|Arthur Dent  |[NULL]
    43|Ford Prefect |1957-04-01
    44|[NULL]       |2021-01-01
\.

\pset null (null)
SELECT * FROM foo;
-- out Null display is "(null)".                                                                                                                                                       
-- out  id |      nam      |    dob     
-- out ----+---------------+------------
-- out  42 | Arthur Dent   | (null)
-- out  43 | Ford Prefect  | 1957-04-01
-- out  44 | (null)        | 2021-01-01

您可以使用 STDIN 从脚本内联导入,但您也可以使用文件进行此练习...