Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:将csv中缺少的值复制到具有NOT NULL约束的列中_Postgresql_Null_Copy - Fatal编程技术网

PostgreSQL:将csv中缺少的值复制到具有NOT NULL约束的列中

PostgreSQL:将csv中缺少的值复制到具有NOT NULL约束的列中,postgresql,null,copy,Postgresql,Null,Copy,我有一个带有整数列的表,该列没有NULL约束,默认值为0 我需要从一系列csv文件中复制数据 在其中一些文件中,此列为空字符串 到目前为止,我已经将COPY命令中的NULL参数设置为一些不存在的值,这样空字符串就不会转换为NULL值,但现在我收到一个错误,指出空字符串对于INTEGER列是不正确的值 我想使用COPY命令,因为它的速度快,但可能是不可能的。 该文件不包含头。文件中的所有列在表中都有对应的列 是否有办法规定: 空刺为零,或 如果有空字符串,是否使用默认列值 您可以在不包含列的表上创

我有一个带有整数列的表,该列没有NULL约束,默认值为0

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

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

到目前为止,我已经将COPY命令中的NULL参数设置为一些不存在的值,这样空字符串就不会转换为NULL值,但现在我收到一个错误,指出空字符串对于INTEGER列是不正确的值

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

是否有办法规定:

  • 空刺为零,或

  • 如果有空字符串,是否使用默认列值


  • 您可以在不包含列的表上创建视图,并在其上创建
    而不是INSERT
    触发器。当您将数据复制到该视图中时,默认值将用于该表。不知道性能是否足够好。

    您可以在不包含列的表上创建一个视图,并创建一个
    而不是在其上插入
    触发器。当您将
    数据复制到该视图中时,默认值将用于该表。不知道性能是否足够好。

    您是指“”中的空字符串吗?那么问题是类型不匹配。如果列为空,则默认值为0的设置应该可以正常工作。
    123、456等。是的,我认为问题在于您所说的类型不匹配,但由于某些原因,它不起作用。我没有使用postgreSQL的经验,但在我看来,复制就像大容量插入一样,默认设置都不起作用。我已经实现了一种解决方法,我使用允许空值的临时表,然后将所有空值更新为默认值,最后将记录插入目标表。明天我可以将工作示例与文件示例一起发布。您是说“”中的空字符串吗?那么问题是类型不匹配。如果列为空,则默认值为0的设置应该可以正常工作。123、456等。是的,我认为问题在于您所说的类型不匹配,但由于某些原因,它不起作用。我没有使用postgreSQL的经验,但在我看来,复制就像大容量插入一样,默认设置都不起作用。我已经实现了一种解决方法,我使用允许空值的临时表,然后将所有空值更新为默认值,最后将记录插入目标表。明天我可以将工作示例与文件示例一起发布感谢您的建议。目前,我转向其他解决办法。临时表格+更新+插入(见我在原始帖子下的评论)。重要的问题是,当复制中明确提到列时,默认值是否应与复制操作一起使用,以及如何避免类型不匹配。谢谢您的建议。目前,我转向其他解决办法。临时表格+更新+插入(见我在原始帖子下的评论)。重要的问题是,当复制中明确提到列时,默认值是否应与复制操作一起使用,以及如何避免类型不匹配。