PostgreSQL:从csv中将COPY值丢失到具有NOT NULL约束的列中

时间:2017-10-13 14:51:55

标签: postgresql null copy

我有一个带有INTEGER列的表,该列具有NOT NULL约束和DEFAULT值= 0;

我需要从一系列csv文件中复制数据。

在其中一些文件中,此列为空字符串。

到目前为止,我已经在COPY命令中将NULL参数设置为某个非现有值,因此空字符串不会转换为NULL值,但现在我收到一条错误,指出空字符串是INTEGER列的错误值。

我想使用COPY命令,因为它的速度,但也许是不可能的。 该文件不包含标头。文件中的所有列都与表中的对应列相同。

有一种方法可以指定:

  1. 空sting为零,或

  2. 如果有空字符串,请使用默认列值?

1 个答案:

答案 0 :(得分:0)

您可以在表上创建一个不包含该列的视图,并在其上创建一个INSTEAD OF INSERT触发器。当您将COPY数据导入该视图时,默认值将用于该表。不知道表现是否足够好。