2016-09-27 17 views
0

我想將CSV文件複製到表r中。在文件中,該字符串"NULL"代表NULL,所以我嘗試:在PostgreSQL表中複製CSV文件時將幾個值解釋爲NULL

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

這工作。但是另一個文件包含兩個表示NULL的值:字符串"NULL"和空字符串""。我如何聲明幾個值應該被解釋爲NULL

+0

技術「」不爲空,它是一個空字符串他們大多認爲同樣的,但他們可以有不同的含義的時間。導入後,您可以隨時運行更新語句以將多個值更改爲NULL。 – Matt

+0

我不知道該怎麼做,因爲該列是一個時間戳,它只允許時間戳和NULL。 –

+0

是的,你必須導入爲VARCHAR,然後在處理無效值後轉換爲時間戳。對不起,我不知道postgressql的導入方法,所以我會讓平臺專家之一回答。乾杯 – Matt

回答

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; 
相關問題