2013-12-18 81 views
0

我們有一個Excel表,其中有18,000個ID。我們在我們的數據庫中有一張主表,這些標識在Excel表中可用。SQL Server 2008 r2中的批量驗證

由於這是一個由許多用戶修改的Excel表,我們希望驗證這18,000個ID,並確保它是數據庫中有效的ID avilable。但我們不想通過一次傳遞一個Id來調用過程並驗證Id。這樣我們必須撥打18,000個數據庫電話來驗證所有18,000個ID,所以我們不會這麼做。

有沒有其他推薦方式實現這個目標?

我試過這個: 通過所有18,000 Ids作爲表值參數的過程。 使用SQL合併概念。目標表:具有所有ID的主表。 源表:表值參數。 條件:ON TargetTable.id = SourceTable.id 當不匹配 - 在這裏我不想更新,刪除或插入我的目標表,因爲這是我們的主表,所以我們不想要任何DML語句那個桌子。但是SQL Merge並沒有讓我在這裏和其他表一起工作。所以這不適合我。

+0

1日帶來的腳手架表的SQL Server的所有數據,然後通過(加入/合併),只要適合你,然後過濾掉不需要的行使用所有已過濾的行執行操作。 –

回答

1

執行此操作的最快方法是批量導入臨時表,然後通過Excel中的ID和參考表的ID加入該表。任何加入的將是有效的,不加入的將是無效的。

有效問卷

SELECT * FROM ExcelDump inner join ReferenceTable on ExcelDump.Id = ReferenceTable.Id 

無效者

SELECT * FROM ExcelDump inner join ReferenceTable on ExcelDump.Id <> ReferenceTable.Id