Postgresql -将数据从松散类型的staging表移动到强类型的最终表-并捕获错误



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

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

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

有更聪明的方法吗?

的问候戴夫

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

参见Postgres sql处理批处理插入异常的例子和注意事项。

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

最新更新