【发布时间】:2018-02-27 14:41:24
【问题描述】:
抱歉这个问题太长了,但我希望它是完整的。
我的目标是创建一个流程,用 MS-SQL Server 创建的(和来自)MS-SQL Server 的数据填充 Oracle 11 数据库。 我想加载尽可能多的数据,并为未通过约束的记录创建错误报告,以便我们可以使用我们的数据测试新应用程序并改进我们的数据收集并重复此过程。
我有 NodeJS 脚本,它直接从 MS-SQL 表中读取(一次一个)并将 INSERT ... EXCEPTION/LOG ERRORS 语句发送到 Oracle 数据库。这似乎运作良好,直到最后。有些表有“可延迟约束”(例如,同一个表中的 parent_id),我无法忽略/报告,所以最后我总是以延迟约束和 0 个插入行的提交错误结束:(
注意:这个问题看起来很像Continuing Inserts in Oracle when exception is raised,但是它没有指定延迟约束或其他工具。
问题鉴于上下文(我不是真正的 Oracle 专家):
1) 是否有另一种方法来处理这些延迟约束,仍然插入有效数据并记录错误?
2) 是否有更好的工具来执行此迁移并报告当前数据问题?
【问题讨论】:
-
您可能会查看DML error logging,从而创建一个错误记录表作为
dbms_errlog.create_error_log('name_of_table'),然后应用您的insert和附加的log errors子句。 -
@WilliamRobertson 我试过了(如问题中所述)。该文档指出,延迟约束没有被捕获。因此问题:)
-
啊,我错过了,对不起。
标签: oracle import constraints deferred