Как я могу проверить данные в массовой вставке - PullRequest
2 голосов
/ 04 марта 2011

Скажем, я вставляю данные в базу данных, используя массовую вставку из asp.net в sol 2008. Теперь я хочу проверить данные Как я могу это сделать. Справка Pls

Ответы [ 2 ]

0 голосов
/ 04 марта 2011

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

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

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

Если «данные уже существуют», в зависимости от того, что вы хотите сделать, вы можете использовать инструкцию MERGE для вставки данных в место назначения.Оператор MERGE позволит вам игнорировать дубликаты или обновлять их (возможно, значения некоторых полей изменились, и вам необходимо обновить новые значения).

0 голосов
/ 04 марта 2011

Я всегда выполняю массовую вставку в промежуточную таблицу (таблица , представляющая конечного дома, но не используемая транзакционной системой).

Это:

  • позволяет мне проверить через TSQL (включая проверку любых связанных данных в других таблицах и т. Д.)
  • гарантирует, что окончательный INSERT (в реальной таблице) полностью зарегистрирован (массовые вставки не обязательно)
  • гарантирует, что никто не прочитает неполные / непроверенные данные
  • предотвращает любые блоки и т. Д. (В или из действующей системы)
  • изолирует от проблем, если вставка выходит из строя на середине

В вашем случае первая пуля является наиболее важной, но все остальные тоже имеют значение.

Кроме того, поскольку данные поступают из .NET, убедитесь, что вы используете SqlBulkCopy, если это действительно массовая вставка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...