如何保护数以百万计的数据?

时间:2016-01-28 14:05:07

标签: sql sql-server etl data-warehouse

如何验证方案?

情景1:

源文件是包含数百万个数据的平面文件。 源文件中的所有数据都将加载到数据库中的目标表。

现在的问题是如何验证所有数据是否正确加载到目标表中?

注意:我们不能使用xls进行验证,因为我们有数百万条记录。

3 个答案:

答案 0 :(得分:1)

有很多方法可以验证数据。其中很大程度上取决于三件事:

  1. 您需要多长时间进行验证?

  2. 您的处理能力是什么?

  3. QA或生产SQL服务器上的数据是?

  4. 如果您处于质量保证并具有很强的处理能力,您可以进行基本检查:

    • 数据加载期间是否有任何警告或错误?
    • 计算数据库中的项目总数与原始文件
    • 计算数据库中空记录的总数
    • 检查列总数与原始文件
    • 检查变量的长度。它们是否符合预期?
    • 是否意外截断了任何字符列?
    • 数字列是否输出正确的有效位数?
    • 日期合理吗?例如,如果您预计2004年的日期,他们会说1970年吗?
    • 有多少重复?
    • 检查列中的数据是否有意义。你可以问几个问题:是否有任何行“转移?”数字列中是否有数字变量?关键栏实际上是关键吗?列名是否有意义?检查空记录应该有助于检测这些事情。
    • 您可以手动计算任何列并将计算与文件中的计算进行比较吗?

    如果您的处理能力较低或者在生产服务器上并且不希望冒险降低其他用户的性能,则可以使用simple random sample执行上述许多检查。比方说,一次取100,000行。或者,如果需要,将其分层。

    这些只是你可以做的一些检查。越多的比较和理智检查,你就越好。

    最重要的是,将这些调查结果和任何传达给文件所有者看起来很奇怪。他们应该能够让您更好地了解数据加载是否正确,或者如果他们甚至在第一时间给你正确的文件。

    您正在加载数据并提供尽可能多的合理检查。如果他们对结果感到满意,并且您对结果感到满意,那么您应该认为数据有效。

答案 1 :(得分:0)

我认为最完整的解决方案是将表导出回第二个平面文件,该文件应与第一个相同,然后编写一个逐行进行差异检查的脚本。您将能够看到是否只有一行不同。

鉴于您正在迁移数百万行数据,我假设一夜之间运行脚本对数据完整性来说不是一件大事。

为了快速验证,您可以检查行数是否相同,并且没有明显错误的数据,例如列映射错误或整个列为空。

答案 2 :(得分:0)

我不是从文件导出的专家,但如果我应该解决这个问题,我会遵循这样的事情。

  1. 将文件加载到普通TableA中,没有任何限制,因此导入过程运行正常。
  2. 使用所有验证创建另一个TableB。类型,字符串长度,FK。
  3. 创建一个商店程序,将数据从TableA移至TableB
  4. 包含捕获错误并插入另一个表格Errors,您可以在其中插入row_iderr_description