2

我正在使用 SSIS 将大型数据库从 oracle 11g 迁移到 SQL SERVER 2008R2。如何使用校验和验证数字数据的数据完整性?

4

1 回答 1

0

过去,我总是使用一些应用程序控件来完成此操作。它应该是在两个平台上都易于计算的东西。

通常,最终结果是如下查询:

select count(*)
,      count(distinct col1) col1_dist_cnt
...
,      count(distinct col99) col99_dist_cnt
,      sum(col1) col1_sum
...
,      sum(col99) col99_sum
from   table

假脱机到文件、Excel 或数据库并比较结果。为项目管理和审计员节省费用。

请在此处阅读有关应用程序控制的更多信息。我写它是为了检查各种财务报告系统之间的监管报告,所以这种方法适用于大多数情况。

如果只有一个字段值错误,它总是会显示出来。两个错误可能会相互补偿。例如,第 1 行第 1 行从第 2 行第 1 行获取值。

要检测这一点,请将每个值与该行的唯一值相乘。例如,如果您有一个唯一的 ID 列或身份也包含在迁移中:

,      sum(ID * col1) col1_sum
...
,      sum(ID * col99) col99_sum

当您遇到数字溢出时,首先尝试使用最大的可用精度(尤其是在 SQL Server 上有时很难)。如果不再可行,请使用 mod 功能。mod只隐藏少数类型的错误。

锦上添花是自动生成这些语句。在 Oracle 上查看 user_tables、user_tab_columns。在 SQL Server 上查看 syscolumns 等。

于 2013-12-11T07:09:57.723 回答