将csv文件中存在的NULL值复制到postgres

Jan*_*ora 16 csv postgresql

我有以下格式的csv文件(y.csv):

 's', '1999-10-10', '1999-12-12'
 'b', '99-10-10 BC', '1-10-10 BC'
 'c', 'NULL', 'NULL'
Run Code Online (Sandbox Code Playgroud)

我在其中有一些NULL值(日期),我通过字符串'NULL'表示.

我试图将csv文件复制到postgres.为此,我创建了一个表:

create table r (id character varying(255), timebegin date, timeend date);
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用该命令将上述.csv文件复制到postgres中

copy r from '/home/y.csv' delimiter ',' csv;
ERROR:  invalid input syntax for type date: " 'NULL'"
CONTEXT:  COPY r, line 1, column timebegin: " 'NULL'"
Run Code Online (Sandbox Code Playgroud)

这样做我收到NULL错误.有人可以帮我找出错误并纠正错误.

小智 34

你试过吗?

 copy r from '/home/y.csv' delimiter ',' csv WITH NULL AS 'null';
Run Code Online (Sandbox Code Playgroud)

  • `复制r来自'/home/y.csv',分隔符为','NULL AS'null'csv;`我不知道语法是否在更高版本的pgsql中更改,但这对我有用. (11认同)
  • 我尝试但是我收到了这个错误:`错误:语法错误在或接近"WITH NULL"`; (7认同)
  • @monteirobrena,留下'WITH'.没有它它会工作. (3认同)
  • 我通常使用文件名中的复制表WITH(FORMAT CSV,NULL“NULL”)并且它可以工作 (2认同)

小智 8

给出文件路径后,我们需要在添加其他参数之前使用“With” -

copy r from '/home/y.csv' with delimiter ','  NULL AS 'null' csv header;
Run Code Online (Sandbox Code Playgroud)