如何将Excel文件导入SQL Server?

81

我有一个Excel文件中的数据,实际上是XLSX格式,因为现在是2020年。我的要求是将这些数据导入到SQL Server中,方法如下:

  1. 临时需求,使用情况是向表中添加测试数据或少量数据(例如< 3k行),并且不经常加载数据。

  2. 在生产系统中以可重复、健壮和可能自动化的方式进行。

2个回答

141

有很多关于编写代码导入Excel文件的文章,但这是一个手动/快捷方式版本:

如果您不需要使用代码以编程方式导入Excel文件,则可以使用SQL Server Management Studio(SSMS)中的菜单非常快速地完成它。

将Excel文件快速导入SQL的最快方法是使用导入向导:

  1. 打开SSMS(SQL Server Management Studio)并连接到您要将文件导入的数据库。

  2. 导入数据:在SSMS中,在“对象资源管理器”下的“数据库”中,右键单击目标数据库,然后选择任务、导入数据。一个导入向导将弹出(通常您只需在第一个屏幕上单击下一步)。

    Enter image description here

  3. 下一个窗口是“选择数据源”。请选择Excel

  • 在“数据源”下拉列表中,选择Microsoft Excel(如果您已安装Excel,则此选项应自动显示)。

  • 单击“浏览”按钮以选择要导入的Excel文件的路径。

  • 选择Excel文件的版本(对于扩展名为.XLS的文件,97-2003通常是可以的,或者对于扩展名为.XLSX的新文件,请使用2007)

  • 如果您的Excel文件包含标题,请勾选“第一行具有标题”复选框。

  • 单击下一步

    Enter image description here

在“选择目标”屏幕上,选择目标数据库:
选择“服务器名称”,身份验证(通常是您的SQL用户名和密码),并选择一个目标数据库。然后点击“下一步”。
在“指定表复制或查询”窗口中:
为了简单起见,只需选择“从一个或多个表或视图复制数据”,然后点击“下一步”。
  • '选择源表:' 从您的Excel文件中选择工作表,并为每个工作表指定一个目标表。如果您还没有表格,向导将非常友好地创建一个新表格,以匹配电子表格中的所有列。点击下一步。

    Enter image description here

  • 点击 完成


  • 1
    你好,感谢你提供这个有趣的答案。但是现在已经是2018年了,我使用最新的导入向导遇到了问题。我尝试导入xls和csv文件,但列名(用UTF-8英语编写)被搞乱了,我无法正确处理它。你介意写一篇更新的答案吗? - MarshallMa
    嗨@MarshallMa,我正在使用最新的Sql Server Management Studio(v17.8.1)版本,所以我重复了上述步骤,一切都保持完全相同,上述步骤仍然有效。如果您在列名方面遇到困难,请检查上面的第3步(有一个复选框指示“第一行具有列名”)。 - Spyder
    SQL导入向导令人沮丧,如果没有SIS,就无法保存配置。使用OPENROWSET方法似乎很有用,但它会带来依赖关系和安全性方面的问题。在AWS桌面上创建一个ODBC链接到SQL Server,然后使用带有连接表的MS Access,在这里我发现效果还不错。我的使用场景是将测试数据导入SQL,因此我只需要在Excel中设置我的测试数据,然后将其剪切并粘贴到Access表中,即可轻松将数据导入SQL Server表。完全可重复,而且您还可以从Access中编辑/删除数据。 - Vanquished Wombat
    更多关于Access导入路线的内容。主要的挫败感在于将Excel数据中的数据格式与通过Access链接表实现的SQL格式对齐。Access抱怨数据太长,无法适应目标列,并没有具体指向实际错误列的指针。除了确认Excel中的列序列和字符串长度之外,还要检查日期,因为它们可能在Excel中显示为DD/MM/YY,但在幕后是完整的日期格式。 - Vanquished Wombat
    4
    如果你收到关于ACE的错误提示,你需要下载驱动程序。驱动程序下载链接为https://www.microsoft.com/en-us/download/details.aspx?id=54920 - DaFi4

    23
    您还可以使用 OPENROWSET 在 SQL Server 中导入 Excel 文件。
    SELECT * INTO Your_Table FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                            'Excel 12.0;Database=C:\temp\MySpreadsheet.xlsx',
                            'SELECT * FROM [Data$]')
    

    5
    收到错误信息 7403,级别 16,状态 1,行 1。 OLE DB 提供程序 "Microsoft.ACE.OLEDB.12.0" 尚未注册。 - Avinash
    1
    @Avinash,抱歉回复晚了。对于提到的消息,您需要下载并安装Microsoft.ACE.OLEDB.12.0提供的ACE。如果您要导入.xls文件,则可以使用查询。 SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls',[Customers$])。 - Prafulla

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接