2013-08-31 92 views
0

我使用这个数据读入到我的Postgres 9.2创建的表:COPY命令问题

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

“QF112592_3.csv”文件的前两行是什么样的?显示表DDL也可能会有帮助。 – bma

+0

好像你在文件中有一个真实类型字段为NULL。 –

回答

2

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

您还没有真正提供帮助您正确使用的信息,但我的猜测是您只需要为列的子集指定FORCE_NOT_NULL。见语法copy

FORCE_NOT_NULL (column_name [, ...]) | 

在类似这样的问题,你真的应该提供一对夫妇的CSV行的,所以我们可以看到到底发生了什么的,当你做出这样的语句:

Before using FORCE_NOT_NULL, I had NULL as '' but changed it because of the different data types.

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