【问题标题】:Postgresql - moving data from loosely typed staging table to strongly typed final table - and catch errorsPostgresql - 将数据从松散类型的临时表移动到强类型的最终表 - 并捕获错误
【发布时间】:2015-07-16 07:28:48
【问题描述】:

我有一个松散类型的暂存表(所有列(除 pk)的数据类型文本),我想将此数据移动到为数据正确键入的表中,例如数字是数字,日期是日期等。

我最初的方法是在 pgsql 中创建一个游标,并循环遍历将其插入最终表的数据,并使用适当的强制转换。

我将捕获错误并使用它们将失败的行插入到错误表中,以便稍后查看和解决。

有没有更聪明的方法?

问候 戴夫

【问题讨论】:

    标签: postgresql error-handling staging


    【解决方案1】:

    使用 PL/PgSQL 函数和 BEGIN ... EXCEPTION WHEN ... END 块包装可能失败的操作。

    请参阅Postgres sql exception handling for batch insert 了解示例和注意事项。

    如果可以在测试模式下调用 PostgreSQL 的转换函数会很好,在测试模式下它们会返回一个表示成功的布尔结果并丢弃产品,或者更好地返回一个 (result, successflag) 的元组。这样你就可以用普通的 SQL 来完成这一切。不幸的是他们不支持,所以你必须使用异常处理循环和子事务。

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2010-12-08
      相关资源
      最近更新 更多