【发布时间】:2021-12-26 21:45:56
【问题描述】:
我正在尝试将一个以竖线分隔的文本文件导入 Vertica 中的表格。文本文件中 NULL 的字符串表示为“[NULL]”。但是,该文件的问题在于,许多带有 NULL 的字段也有尾随空格。
这看起来肯定是不可能的,但是有没有办法将正则表达式传递给 null 参数?
除了一堆 COPY 更新之外还有其他想法吗?
【问题讨论】:
标签: vertica
我正在尝试将一个以竖线分隔的文本文件导入 Vertica 中的表格。文本文件中 NULL 的字符串表示为“[NULL]”。但是,该文件的问题在于,许多带有 NULL 的字段也有尾随空格。
这看起来肯定是不可能的,但是有没有办法将正则表达式传递给 null 参数?
除了一堆 COPY 更新之外还有其他想法吗?
【问题讨论】:
标签: vertica
在 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 从脚本中内联导入,但您也可以在本练习中使用文件...
【讨论】: