2016-07-04 55 views
0

我有CSV文件導入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

添加NULL參數有一個字符串,它肯定不會出現在文件中:

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

the documentation

NULL

指定代表NULL值的字符串。默認值是\ N(反斜槓-N)文本格式,以及CSV 格式的未加引號的空字符串。如果您不想區分空字符串的空值,則您可能更願意使用文本格式的空字符串,例如 。使用二進制格式時,不允許使用此 選項。

或者使用coalesce()

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

我發現我自己。但它不是很多「自動」:) – user1697111

+0

好吧,我有另一個命題;) – klin

+0

嗯,我第一次看到這個!它部分工作。所有單元格都爲空的列未填充''。你能改善嗎? – user1697111