2013-08-29 6 views
0

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

Я знаю, что мы можем сделать это, проверив все строки перед рукой. Но так как это объемная вставка из csv и обрабатывается кодом .net, поэтому из db мы не проверяем ее, а вводим непосредственно.

Мы также можем сделать это, запустив петлю, но производительность может поразиться.

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

+0

Не можете ли вы проверить данные в своем .NET-коде перед его вставкой? – usr

+0

Да, они уже проверяют его. Но все же хотите вернуть строки ошибок, если они есть, после их вставки их массовыми. – venkatesh

ответ

0

BULK INSERT - это все или ничего. Увы, SQL Server не имеет возможности шунтировать ошибочные строки в отдельную таблицу.

Лучшее, что вы можете сделать, это полностью проверить все данные перед их вставкой. Если вставка все еще не работает (возможно, из-за ошибки), вам нужно повторить все строки по очереди и регистрировать ошибки, которые происходят.

Вы также можете вставлять массив в временную таблицу и перемещать строки оттуда к финальной таблице один за другим.