2012-05-22 2 views
1

Один из наших клиентов хочет сделать проверку каждой записи базы данных в каждой таблице. Проблема в том, что наша база данных имеет в настоящее время десятки таблиц (более 50), и каждая таблица уже имеет тысячи записей.Лучший способ анализа и проверки всех данных базы данных

Основная проверка, которую наш клиент хочет сделать, - проверить каждую таблицу, в которой столбцы имеют нулевые значения. Наш клиент предполагает, что, если пользователи платформы будут заполнять только основные входы, это может означать, что пользователи не в полной мере используют доступные входы на платформе.

Что было бы лучшим способом удовлетворить это требование?

Я уже думал об этом статистически например:

  • Table1 имеет 30 записей со следующими пустыми столбцами (COLUMN1, COLUMN2, Column3)
  • 30% из таблиц базы данных имеют записи с нулевым значениями
+4

SQL Server? MySlq? Oracle? Я знаю, как это сделать для SQL Server, но это может не относиться к другим данным. Сначала я запрошу таблицы схем, чтобы найти столбцы, которые могут содержать нулевые значения (используя такой запрос: http://www.mssqltips.com/sqlservertip/1781/list-columns-and-attributes-for-everytable -in-sql-server-database /), а затем строить запросы «на лету» для этих столбцов, возвращая счет. – David

+0

Спасибо за ответ Дэвида, это база данных SQL Server 2008 R2. Таким образом, вы сможете получить агрегированные данные? –

+1

Щедрое предложение: для каждого столбца, который допускает null, попробуйте ALTER TABLE, чтобы запретить NULL. Если это не удается, в столбце таблицы есть нули. Если это удастся, в этом столбце не было нулей (и в будущем они не будут иметь нулей). –

ответ

2

Я знаю, что это действительно не отвечает на поставленный вами вопрос, но я думаю, что просто проверка «нулевого» - это начало требования, но вряд ли это будет конец.

В большинстве проектов, которые я сделал с большим количеством данных, мы создали структуру проверки, которая имела бизнес-логику для каждой таблицы и каждое поле в каждой таблице.

Например, мы обнаружили, что многие записи включали ложные адреса электронной почты, поэтому мы написали сценарий для их проверки (действительно простая вещь, проверяющая, что домен существует, и не является одним из «test.com», «aaa.com», «qwerty.com» и т. д.). Мы также поняли, что у нас появились фиктивные телефонные номера, поэтому мы проверили, что номера телефонов совпадают, очевидно, с готовым номером (123-456789).

Это боль в задней части, но если бизнес хочет понять качество данных, это единственный способ сделать это.

Мы закончили тем, что написали десятки небольших SQL-скриптов, каждый из которых выплюнул список «подозрительных» записей, с причиной (-ами) для их подозрения. Это было некрасиво, но было легко расширить, легко запускать, дало бизнесу достаточно информации для принятия решений.

+0

Вы на самом деле догадались :) Сегодня у нас была встреча с клиентом, и что он в итоге захотел была системой правил для проверки таблиц, чтобы он мог создавать несколько правил для каждой таблицы, например брандмауэра, если записи в каждой таблице не соответствуют указанным требованиям в правилах, мы показываем «недействительные» записи. Ваша идея тоже хороша. Я подожду, чтобы узнать, могу ли я получить больше идей об этой проблеме. Благодаря :) –

Смежные вопросы