2013-09-26 18 views
9

我在如下因素格式csv文件(y.csv):在它我已經通過指示複印NULL值

's', '1999-10-10', '1999-12-12' 
'b', '99-10-10 BC', '1-10-10 BC' 
'c', 'NULL', 'NULL' 

我有幾個NULL值(日期)字符串'NULL'。

我想將csv文件複製到postgres中。這樣做我創建了一個表:

create table r (id character varying(255), timebegin date, timeend date); 

現在我嘗試使用命令

copy r from '/home/y.csv' delimiter ',' csv; 
ERROR: invalid input syntax for type date: " 'NULL'" 
CONTEXT: COPY r, line 1, column timebegin: " 'NULL'" 

在這樣做我正在用NULL錯誤上述.csv文件複製到Postgres的。有人可以幫我找出錯誤並糾正它。

回答

21

你試過了嗎?

copy r from '/home/y.csv' delimiter ',' csv WITH NULL AS 'null'; 
+6

我嘗試但我收到此錯誤:'錯誤:語法錯誤在或接近「WITH NULL」'; – monteirobrena

+5

'將'/home/y.csv'的分隔符拷貝爲'''NULL'as'null'csv;'我不知道pgsql後來版本中的語法是否改變了,但這對我來說很有用。 –

+3

@monteirobrena,離開'WITH'。它沒有它就會工作。 –

1

錯誤是因爲您正在插入NULL作爲字符串。刪除NULL左右的引號,它應該工作。

+0

這不是一個解決方案。如果這是一個自動化過程呢? – Kermit

+1

@FreshPrinceOfSO:我知道這可能不是一個理想的解決方案,但正如問題中提到的那樣:「我有一些NULL值(用於日期),我通過字符串'NULL'表示它。」該錯誤是因爲試圖在日期列中插入一個字符串。 – heretolearn