java.sql.SQLException:[BEA] [Oracle JDBC Driver] [Oracle] ORA-01438:大于指定精度的值允许此列

时间:2009-07-28 18:00:34

标签: java sql data-migration sanity-check

我在生产中收到此错误消息。

不幸的是,这来自购买的应用程序,支持流程并不是很快。

将数据从一个表复制到另一个表时会发生这种情况。两个表都应该具有相同的列类型和长度。到目前为止,我已经通过以下方式审查了其中一些:

select distinct( length( column_name ) ) ) from source_table

然后将该值与目标表中column_name的长度进行比较,但这花费了我很多时间。

有更好的方法来执行此检查吗?

我想确定哪个列包含长度超出源限制的数据。

我正在使用:

Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production

2 个答案:

答案 0 :(得分:0)

用于调试此问题的强力方法:

您可以创建一个运行FOR循环的脚本,并从表A到表B逐行插入,将行ID或一些相关数据输出到控制台。识别出坏行后,您可以尝试使用坏行中的列数据逐列更新现有行,直到找到罪魁祸首为止。

答案 1 :(得分:0)