在PostgreSQL表

时间:2016-09-27 16:31:22

标签: sql postgresql csv

我想将CSV文件复制到表r中。在文件中,字符串"NULL"代表NULL,所以我尝试了:

copy r from 'file.csv' WITH NULL AS 'NULL' DELIMITER ';' CSV HEADER;

这很有效。但是另一个文件包含两个表示NULL的值:字符串"NULL"和空字符串""。如何声明多个值应解释为NULL

1 个答案:

答案 0 :(得分:1)

正如@Matt所提到的,这里最好的选择是将列导入为text,然后将其转换为timestamptz。所以创建这样的表:

CREATE TABLE r (
    ...
    t timestamp with time zone,
    ...
);

然后按照建议使用COPY导入数据。最后转换时间戳如下:

ALTER TABLE r
ALTER COLUMN t
TYPE timestamptz
USING
    CASE t
        WHEN 'NULL' THEN NULL
        WHEN '' THEN NULL
        ELSE t::timestamptz
    END;