我有要在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''每列声明但没有成功。
答案 0 :(得分:1)
添加NULL
参数,其中包含一个肯定不会出现在文件中的字符串:
COPY mylist FROM 'C:\temp\popisp1.csv' DELIMITER AS ';' NULL '<<>>' CSV;
NULL
指定表示空值的字符串。默认值为文本格式的\ N(反斜杠-N),CSV中的未加引号的空字符串 格式。对于案例,您甚至可能更喜欢文本格式的空字符串 你不希望区分空字符串的空字符串。这个 使用二进制格式时不允许使用选项。
或使用coalesce()
:
update mylist set
a = coalesce(a, ''),
b = coalesce(b, ''),
-- ...
w = coalesce(w, '');