2012-05-22 34 views
1

我们的一位客户希望检查每个表中的每个数据库记录。 问题是,我们的数据库目前有几十个表格(高于50),每个表格已经有成千上万的记录。分析和检查所有数据库数据的最佳方法

我们客户要做的基本检查是检查每个表中哪些列具有空值。我们的客户假设,如果平台用户只填写基本输入,这可能意味着用户没有充分利用平台中的可用输入。

满足此要求的最佳方法是什么?

我已经想过这样做统计例如:

  • 表1有30条记录与以下空列(列1,列2,栏3)
  • 数据库表的
  • 30%的记录与零值
+4

SQL Server? MySlq?甲骨文?我知道如何为SQL Server做,但这可能不适用于其他数据库。我首先查询模式表来查找可以包含空值的列(使用如下查询:http://www.mssqltips.com/sqlservertip/1781/list-columns-and-attributes-for-every-table -in-a-sql-server-database /),然后为这些列即时生成查询,返回计数。 – David

+0

感谢您回复David,是一个SQL Server 2008 R2数据库。那么您可以通过某种方式检索汇总的数据吗? –

+1

舌头在脸颊建议:对于允许空值的每列,请尝试使用ALTER TABLE来禁止NULL。如果失败,表格中该列中的空值。如果成功,该列中就没有空值了(并且在将来也不会有空值)。 –

回答

2

我知道这不是真的回答你提出的问题,但我认为只是检查“空”是需求的开始,但不可能是结束。

在大多数我用大量数据完成的项目中,我们最终构建了一个验证框架,每个表具有业务逻辑,每个表中的每个字段都有业务逻辑。

例如,我们发现很多记录包含了伪造的电子邮件地址,所以我们编写了一个脚本来验证它们(最简单的事情,检查域是否存在,而不是“test.com”之一, “aaa.com”,“qwerty.com”等)。我们也意识到我们收到的是伪造的电话号码,所以我们检查了显然是匹配的电话号码(123-456789)。

这是背后的痛苦,但如果企业想要了解数据的质量,这是做到这一点的唯一方法。

我们最终编写了几十个SQL脚本,每个脚本都会出现一个“可疑”记录列表,并列出怀疑它们的原因。这不是很好,但很容易扩展,易于运行,为业务提供了足够的信息来作出决定。

+0

你实际上已经猜到了:)今天我们和客户端进行了一次会面,他最终想要什么是一个规则系统来检查表,以便他可以为每个表制定多个规则,如防火墙,如果每个表上的记录都不符合规则中的指定要求,我们将显示“无效”记录。你的想法也很好。我会等待看看能否获得关于这个问题的更多想法。谢谢 :) –

相关问题