如何将 Excel 文件导入 SQL Server? [关闭]
Posted
技术标签:
【中文标题】如何将 Excel 文件导入 SQL Server? [关闭]【英文标题】:How can I import an Excel file into SQL Server? [closed] 【发布时间】:2017-01-29 07:48:06 【问题描述】:我在 Excel 文件中有数据 - 实际上是 XLSX 格式,因为现在是 2020 年。我的要求是将这些数据按如下方式导入 SQL Server:
ad hoc,用例是为表提供测试数据,或少量数据(例如
以可重复、稳健且可能自动化的方式用于生产系统。
【问题讨论】:
【参考方案1】:关于编写代码导入 Excel 文件的文章很多,但这是手动/快捷版本:
如果您不需要使用代码以编程方式导入 Excel 文件,您可以使用SQL Server Management Studio (SSMS) 中的菜单快速完成。
将 Excel 文件导入 SQL 的最快方法是使用导入向导:
打开 SSMS (SQL Server Management Studio) 并连接到您要将文件导入到的数据库。
导入数据:在对象资源管理器的 SSMS 中的“数据库”下,右键单击目标数据库,然后选择任务、导入数据。将弹出一个导入向导(您通常只需在第一个屏幕上单击 Next)。
下一个窗口是“选择数据源”。选择Excel:
在“数据源”下拉列表中,选择Microsoft Excel(如果您安装了 Excel,此选项应该会自动出现)。
单击“浏览”按钮选择要导入的 Excel 文件的路径。
选择 Excel 文件的版本(97-2003 通常适用于具有 .XLS 扩展名的文件,或者使用 2007 用于具有 .XLSX 扩展名的较新文件)
如果您的 Excel 文件包含标题,请勾选“第一行有标题”复选框。
点击下一步。
-
在“选择目的地”屏幕上,选择目的地数据库:
选择“服务器名称”、身份验证(通常是您的 sql 用户名和密码)并选择一个数据库作为目标。点击下一步。
-
在“指定表复制或查询”窗口中:
'选择源表:'从您的 Excel 文件中选择工作表并为每个工作表指定一个目标表。如果您还没有表格,向导将非常友好地创建一个与电子表格中所有列匹配的新表格。点击下一步。
点击完成。
【讨论】:
您好,感谢您提供这个有趣的答案,哈哈。但现在是 2018 年,我在使用最新的导入向导时遇到问题。我尝试导入 xls 和 csv 文件,但列名(用 UTF-8 英语编写)被弄乱了,我无法正确处理。你介意写一个更新的答案吗? 嗨@MarshallMa,我使用的是2018年最新版本的Sql Server Management Studio(v17.8.1),所以我重复了上述步骤,一切都保持不变,上述步骤仍然有效。如果您正在为列名而苦苦挣扎,请检查上面的第 3 步(有一个复选框表示“第一行有列名”) SQL 导入向导令人沮丧,除非您有 SIS,否则您无法保存配置。 OPENROWSET 方法看起来很有用,但却是依赖性和安全性的噩梦。通过创建到 SQL Server 的 ODBC 链接,然后将 MS Access 与链接表一起使用,我在 AWS 桌面上找到了不错的成绩。我的用例是将测试数据输入 SQL,所以我需要做的就是在 Excel 中设置我的测试数据,然后剪切并粘贴到 Access 表中,然后瞧 > SQL Server 表中的数据。完全可重复,而且您也可以从 Access 编辑/删除数据。 更多关于 Access 导入路由的信息。主要的挫折是将 Excel 数据中的数据格式与通过 Access 链接表实现的 SQL 格式对齐。 Access 抱怨目标列的数据太长,没有指向实际错误列的特定指针。除了在 Excel 中确认列顺序和字符串长度外,还要检查您的日期,这些日期可以在 Excel 中显示为 DD/MM/YY,但在幕后是完整的日期格式。 如果您收到有关 ACE 的错误,您需要驱动程序 microsoft.com/en-us/download/details.aspx?id=54920【参考方案2】:您也可以使用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$]')
【讨论】:
收到此消息 7403,级别 16,状态 1,第 1 行 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”尚未注册。 @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$])以上是关于如何将 Excel 文件导入 SQL Server? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 将 Excel 文件导入 Microsoft SQL Server
将超过 255 个字符从 excel 导入到 sql server(上一个问题 - 如何使用 ssis 将文本限定 CSV 动态加载到 sql server)