2011-03-04 109 views
2

說我使用批量插入是從asp.net溶膠2008.Now插入數據到數據庫我想驗證我該怎麼辦that.Pls幫助我如何可以驗證該數據批量插入

數據
+0

你想要做什麼樣的驗證? – Peter

+0

要檢查數據是否爲空,數據已存在並驗證其是否爲有效數據 – user628347

+0

在插入之前或插入之後進行驗證?你是如何做大量插入?任何代碼? –

回答

0

那麼在大多數情況下你的臨時表的設計應該是這樣的,它不會允許空值,他們不應該和字段的數據類型應該是你所期望的類型。所以說,一個字段是一個日期時間,那麼你將無法插入任何數據,期望是一個日期時間類型的數據。同樣,如果一個字段被定義爲一個int,那麼該數據不能是字符串類型等。

通過爲字段定義正確的數據類型儘可能地嘗試和使用數據庫的功能。如果需要執行任何其他驗證,則可以運行一些存儲過程,在導入完成後執行其他驗證。

此外,觸發對目標表可以與確保有效數據量太大幫助。

對於「數據已存在」這取決於你想要做什麼,你可以使用MERGE語句將數據插入到目標。 MERGE語句將允許您忽略重複或更新它們(也許某些字段的值已更改,並且需要更新新值)。

+0

我會警告在批量插入期間不要依賴觸發器;在這種情況下,它們完全是可選的 –

+0

@Marc,你必須知道,問題太廣泛了,所以我給出了一般性的建議/選項,而不是具體的。 –

+0

很好,但很好 - 但這並不會使「臨時表上的觸發器」成爲一個可靠的選項... –

0

我總是批量插入到一個臨時表(表中的最後一個主場的代議制,但不使用的事務處理系統)。

此:

  • 讓我通過TSQL,以驗證(包括檢查在其他表等的任何相關數據)
  • 確保最終INSERT(進入真正的表)被完全記錄(批量插入AREN」噸,不一定)
  • 確保沒有人不完整的/未驗證的數據
  • 防止任何塊等讀取(或從直播系統)
  • 從問題絕緣如果插入失敗一半通過

在你的情況下,第一個子彈是最重要的,但所有其他的問題也是如此。

此外,由於數據是從.NET來了,請確保您使用SqlBulkCopy,如果這確實是一個批量插入。

+0

,但這是否回答瞭如何驗證的問題? :) –

+0

@shiv - 是的,它確實...一旦它在臨時表中,您可以使用TSQL。添加所需的任何檢查... –