SQL导入和导出向导

时间:2015-05-05 01:08:58

标签: sql-server excel sql-server-2012

我需要将Excel文件导入SQL Server 2012数据库。它每个月将包含大约12,000行。我知道我可以使用向导执行此任务,但如果它们与要导入的数据的ID号匹配,我想从目标表中删除这些行。

我是否可以将数据导入临时表,然后通过向导在一个脚本中进行匹配/删除?

我应该考虑另一种方法吗?

由于

1 个答案:

答案 0 :(得分:1)

实际上有一种方法可以像对表格一样查询Excel文件,并且它可以让您轻松地执行您所描述的操作。话虽如此,还有一些初步的工作要让它发挥作用。

对于此解释,我使用xlsx文件(使用Excel 2013创建)进行本地测试,其中包含一个包含两列的工作表Sheet1,第一行包含列名Field1和{{1} }。

这是我目前能够做的事情。

Field2

这就是我需要达到的目的。

  1. 我下载并安装了2007 Office System Driver: Data Connectivity Components

  2. 我必须使用以下命令启用即席查询。

    --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
    
  3. 我必须确保我作为系统管理员运行SQL Server Management Studio。在我的情况下,我需要右键单击并以以管理员身份运行。如果您处于更受管理的环境中,请与网络管理员合作以获得正确的权限。
  4. 这应该就是你所需要的。再一次,我在本地进行了测试,并且我在上面列出的每个项目都需要克服特定错误。