我需要将Excel文件导入SQL Server 2012数据库。它每个月将包含大约12,000行。我知道我可以使用向导执行此任务,但如果它们与要导入的数据的ID号匹配,我想从目标表中删除这些行。
我是否可以将数据导入临时表,然后通过向导在一个脚本中进行匹配/删除?
我应该考虑另一种方法吗?
由于
答案 0 :(得分:1)
实际上有一种方法可以像对表格一样查询Excel文件,并且它可以让您轻松地执行您所描述的操作。话虽如此,还有一些初步的工作要让它发挥作用。
对于此解释,我使用xlsx文件(使用Excel 2013创建)进行本地测试,其中包含一个包含两列的工作表Sheet1
,第一行包含列名Field1
和{{1} }。
这是我目前能够做的事情。
Field2
这就是我需要达到的目的。
我下载并安装了2007 Office System Driver: Data Connectivity Components。
我必须使用以下命令启用即席查询。
--SELECT from Sheet1 into a local temp table
SELECT * INTO #TempTable
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml;
Database=C:\Users\pwalton\Documents\test.xlsx',
[Sheet1$]);
--Clear out the original records
DELETE FROM TestImportTable
WHERE Field1 IN (SELECT Field1 FROM #TempTable)
--Insert the new ones
INSERT INTO TestImportTable
SELECT * FROM #TempTable
--Get rid of the evidence!
DROP TABLE #TempTable
这应该就是你所需要的。再一次,我在本地进行了测试,并且我在上面列出的每个项目都需要克服特定错误。