簡體   English   中英

使用psql復制csv時包含NULL值

[英]Include NULL values when copying csv using psql

我有一個嘗試將各種數據格式復制到Postgres的csv。 我每次都會遇到此錯誤,因為在97789行,我有幾列帶有空單元格。

除了要刪除此行(以及其他可能包含NULL值的行),我還想找到一種解決方案,將它們包括在數據庫中。 ma effective date列應采用整數值。 但是,當我嘗試使用以下代碼時,它不起作用,可能是因為我試圖將NULL作為字符串輸入:

oakland=# \copy test_import FROM '/Users/Downloads/IE670_test.csv' DELIMITER ','  NULL AS 'NULL' csv
ERROR:  invalid input syntax for integer: "        "
CONTEXT:  COPY test_import, line 97789, column ma effective date (ccyymmdd): "        "

但是,將NULL as NULL切換NULL as NULL也不起作用,並在psql產生語法錯誤。 是否有有效的解決方案,無論列中的數據類型如何,都包含NULL值?

這是原始格式的違規行:

048A706200600,48A-7062-6     ,17,3,5815,PRESLEY WAY                                       ,          ,OAKLAND                       ,94618,    ," $102,150.00 "," $38,259.00 ", $-   , $-   , $-   , $-   , $-   ," $7,000.00 ", $-   ," $133,409.00 ",2015,139807,20150527,20150901, ,                    ,                                                  ,                                                            ,          ,                              ,     ,    ,  , ,        , ,1100,Single family residential homes used as such

如果空值單元格確實為空,則省略NULL AS 'NULL'子句。 否則(似乎是這種情況),將'NULL' 字符串替換為包含這些單元格中任何內容的字符串。 您可能需要確保csv中的空值一致。

test.csv(一個空格為null):

1, ,3

的SQL

create table csv (one int, two int, three int);

一個空格為null:

\copy csv from '~/test.csv' delimiter ',' null as ' ' csv;
COPY 1

兩個空格為null:

\copy csv from '~/test.csv' delimiter ',' null as '  ' csv;
ERROR:  invalid input syntax for integer: " "
CONTEXT:  COPY csv, line 1, column two: " "

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM