2012-05-22 65 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

你實際上已經猜到了:)今天我們和客戶端進行了一次會面,他最終想要什麼是一個規則系統來檢查表,以便他可以爲每個表制定多個規則,如防火牆,如果每個表上的記錄都不符合規則中的指定要求,我們將顯示「無效」記錄。你的想法也很好。我會等待看看能否獲得關於這個問題的更多想法。謝謝 :) –

相關問題