【问题标题】:Vertica Copy Statement - Null Parameter with Multiple Null StringsVertica Copy 语句 - 具有多个 Null 字符串的 Null 参数
【发布时间】:2021-12-26 21:45:56
【问题描述】:

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

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

这看起来肯定是不可能的,但是有没有办法将正则表达式传递给 null 参数?

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

【问题讨论】:

    标签: vertica


    【解决方案1】:

    在 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 从脚本中内联导入,但您也可以在本练习中使用文件...

    【讨论】:

    • 太棒了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多