2013-08-29 94 views
0

我需要將表數據插入到另一個表中。不保證源表中的某些非空字段具有空值的情況下,所有行都具有正確的行。因此,在這個源表中,我需要輸入所有有效的行到表中,並找到所有無效的行,但無法插入並返回它們。需要批量插入提示

我知道我們可以通過先驗證所有行來做到這一點。但是,因爲這是從csv批量插入並通過.net代碼解析,所以從db我們不會驗證它,而是直接進入。

我們也可以通過運行循環來做到這一點,但性能可能會受到影響。

所以我的問題是任何方式,我們可以使用單個語句插入和跳過有問題的行並插入哪些是有效的。

+0

插入它之前,您不能驗證.NET代碼中的數據嗎? – usr

+0

是的,他們已經驗證它。但是仍然希望在通過批量插入後返回錯誤行。 – venkatesh

回答

0

BULK INSERT是全有或全無。 SQL Server不具備將錯誤行分流到單獨的表中的能力,唉。

您可以做的最好的事情是在插入之前徹底驗證所有數據。如果插入仍然失敗(可能是由於錯誤),則需要逐個重試所有行並記錄正在發生的錯誤。

您也可以批量插入臨時表並將行從那裏一個一個地移動到最終表。