使用默认值

时间:2016-07-04 20:29:23

标签: postgresql

我有要在PostgreSQL表中导入多个列的CSV文件。 我首先创建一个临时表,然后复制CSV文件...

DROP TABLE IF EXISTS mylist;
CREATE TEMP TABLE mylist (a text, b text, c text, d text, e text, f text, 
                      g text, h text, i text, j text, k text, l text,
                      m text, n text, o text, p text, q text, r text, 
                      s text, t text, u text, v text, w text, 
                      CONSTRAINT popisp_pkey PRIMARY KEY(A));

COPY mylist FROM 'C:\temp\popisp1.csv' DELIMITER AS ';' CSV;

这会将数据复制到表格中,但会出现其他问题。在没有任何数据的字段中似乎复制了Null,但我需要一个空字符串('')。

这里是否有任何方法可以获取空字符串,其中表格单元格中没有数据? 我试着添加DEFAULT''每列声明但没有成功。

1 个答案:

答案 0 :(得分:1)

添加NULL参数,其中包含一个肯定不会出现在文件中的字符串:

COPY mylist FROM 'C:\temp\popisp1.csv' DELIMITER AS ';' NULL '<<>>' CSV;

the documentation

  

NULL

     

指定表示空值的字符串。默认值为文本格式的\ N(反斜杠-N),CSV中的未加引号的空字符串   格式。对于案例,您甚至可能更喜欢文本格式的空字符串   你不希望区分空字符串的空字符串。这个   使用二进制格式时不允许使用选项。

或使用coalesce()

update mylist set
    a = coalesce(a, ''),
    b = coalesce(b, ''),
--    ...
    w = coalesce(w, '');