COPY命令问题

时间:2013-08-31 22:37:02

标签: postgresql postgresql-copy

我正在使用它将数据读入我在Postgres 9.2中创建的表中:

COPY tagdata FROM 'C:/Filter112595/QF112595_3.csv' WITH DELIMITER ',' 
    CSV HEADER FORCE_NOT_NULL;

数据类型为realintegerdate

我收到此错误:

ERROR:  invalid input syntax for type real: "NULL"
CONTEXT:  COPY tagdata, line 2, column residual: "NULL"

在使用FORCE_NOT_NULL之前,我有NULL作为'',但由于数据类型不同而改变了它。

有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:2)

你告诉PostgreSQL没有列是空的,所以列中的NULL必须表示一个数字。由于NULL不是有效的浮点数,因此会出错。

您还没有真正提供正确帮助您所需的信息,但我猜您需要仅为列的子集指定FORCE_NOT_NULL。请参阅copy的语法:

    FORCE_NOT_NULL ( column_name [, ...] ) |

在这样的问题中你真的应该提供几行CSV,这样我们才能看到真正发生的事情,以及何时发表如下声明:

  

在使用FORCE_NOT_NULL之前,我将NULL设为'',但由于数据类型不同而改变了它。

你需要解释 - 什么“不同的数据类型”,为什么你需要改变它,你认为你正在解决什么问题,链接到任何以前相关的SO问题等。