2013-12-18 79 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