我有一个INTEGER列具有NOT NULL约束和DEFAULT值= 0;PostgreSQL:从csv缺失值复制到一个列与NOT NULL约束
我需要从一系列csv文件中复制数据。
在其中一些文件中,此列是一个空字符串。
到目前为止,我已经将COPY命令中的NULL参数设置为某个不存在的值,所以空字符串不会被转换为NULL值,但现在我收到一个错误,指出INTEGER列的空字符串值不正确。
我想使用COPY命令,因为它的速度,但也许这是不可能的。 该文件不包含标题。文件中的所有列都有表中的对应项。
它有办法规定:
空刺痛为零,或
如果有恩空字符串使用默认的列值?
你的意思是空串如''?然后问题是类型不匹配。如果列只是空的,你的设置默认为0应该可以正常工作'123,,456等'。 –
是的,我认为问题在于你说的类型不匹配,但由于某种原因它不起作用。我没有使用postgreSQL的经验,但在我看来,COPY就像是BULK insert,并且没有违约行为。我已经实现了一个解决方法,我使用允许NULL的临时表,然后将所有NULL更新为默认值,最后将记录插入到目标表中。我可以在明天发布工作示例以及文件示例 –