从文件复制:错误:整数输入语法无效:“\N”

Kem*_*hou 4 postgresql psql

我的表列定义了 intcol 整数;没有 NOT NULL 约束。在加载文件中,大多数值是整数,但有一些是空值,如复制手册所建议的那样标有 '\N' 默认值。复制命令可以将'\N' 转换为表中的空值吗?我也尝试过使用 null 'NA'。收到类似的错误信息。

ERROR:  invalid input syntax for integer: "\N"
CONTEXT:  COPY table_name, line 111, column position3: "\N"
Run Code Online (Sandbox Code Playgroud)

有什么技巧吗?

kli*_*lin 5

使用NULL参数。从文档:

空值

指定表示空值的字符串。默认为文本格式的 \N(反斜杠-N),以及 CSV 格式的未加引号的空字符串。

例子

copy my_table from '/my/csv_file.csv' (format csv, null '\N');
Run Code Online (Sandbox Code Playgroud)

  • 最初我认为 (\N) 是默认的,你不必指定它。 (2认同)
  • 如果您使用默认格式,@KeminZhou \N 是默认值。但是一旦将格式切换为 csv,默认值是不带引号的空字符串 (2认同)