繁体   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