在Postgres中使用copy命令时出错(错误:类型日期的无效输入语法:"")

Bla*_*ixx 10 postgresql

我有一个CSV文件,我试图使用Postgres COPY命令从该CSV文件填充表格.其中一个表列NEXT_VISIT是日期data_type.CSV文件中应该进入此日期列的某些相应字段具有空值.

我正在运行的复制命令是这样的:

COPY "VISIT_STAGING_TABLE" from E'C:\\Users\\Sir Codealot\\Desktop\\rufijihdss-2007-2010\\rufijihdss\\VISIT_TEST.CSV' CSV HEADER 
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,我收到错误:

ERROR:  invalid input syntax for type date: ""
CONTEXT:  COPY VISIT_STAGING_TABLE, line 2, column NEXT_VISIT: ""

********** Error **********
ERROR: invalid input syntax for type date: ""
SQL state: 22007
Context: COPY VISIT_STAGING_TABLE, line 2, column NEXT_VISIT: ""
Run Code Online (Sandbox Code Playgroud)

如何运行copy命令并让Postgres接受CSV文件中的某些字段对应的NEXT_VISIT""

ham*_*zus 12

添加WITH NULL AS ''到您的命令(COPY期望NULL默认表示为"\ N"(反斜杠-N)).

COPY "VISIT_STAGING_TABLE" from E'C:\\Users\\Sir Codealot\\Desktop\\rufijihdss-2007-2010\\rufijihdss\\VISIT_TEST.CSV' WITH CSV HEADER NULL AS ''
Run Code Online (Sandbox Code Playgroud)

更多细节在这里:postgresql COPY

  • Hamza,您向我提供的链接(http://wiki.postgresql.org/wiki/COPY)向我证实 POSTGRES 无法处理我所要求的内容。以下是该链接上该页面的摘录:“NULL 行为与 NULL AS '""' 是违反直觉的,当遇到空引号时,不会插入 null,任何引用的内容都是非 null,并且此参数不会短路 -循环该行为。” (2认同)

小智 5

我遇到了完全相同的问题,对我来说解决该问题的是使用语句WITH NULL ''。重要的是,撇号之间不要有空格

我最初使用该语句WITH NULL ' '并得到与您相同的错误消息(错误:“ WITH NULL”或附近的语法错误)。

但是,当我消除撇号之间的空格时,它起作用了。