sqlserver如何导入excel数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver如何导入excel数据?相关的知识,希望对你有一定的参考价值。

参考技术A 使用OpenRowSet操作Excel \\x0d\\x0a有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。\\x0d\\x0a\\x0d\\x0aJet 引擎大家都很熟悉,可以访问 Office 97-2003,但不能访问 Office 2007。\\x0d\\x0a\\x0d\\x0aACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。\\x0d\\x0a\\x0d\\x0a另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。\\x0d\\x0a\\x0d\\x0a语法举例: \\x0d\\x0a\\x0d\\x0a--> Jet 引擎访问 Excel 97-2003 \\x0d\\x0a\\x0d\\x0aselect * from OpenRowSet(\'Microsoft.Jet.OLEDB.4.0\', \'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls\', \'select * from [Sheet1$]\') \\x0d\\x0aselect * from OpenRowSet(\'Microsoft.Jet.OLEDB.4.0\', \'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls\', [Sheet1$]) \\x0d\\x0aselect * from OpenDataSource(\'Microsoft.Jet.OLEDB.4.0\', \'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls\')...[Sheet1$] \\x0d\\x0aselect * from OpenDataSource(\'Microsoft.Jet.OLEDB.4.0\', \'Data Source=D:\97-2003.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"\')...[Sheet1$] \\x0d\\x0a\\x0d\\x0a--> ACE 引擎访问 Excel 97-2003 \\x0d\\x0a\\x0d\\x0aselect * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls\', \'select * from [Sheet1$]\') \\x0d\\x0aselect * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls\', [Sheet1$]) \\x0d\\x0aselect * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls\')...[Sheet1$] \\x0d\\x0aselect * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Data Source=D:\97-2003.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"\')...[Sheet1$] \\x0d\\x0a \\x0d\\x0a--> ACE 引擎访问 Excel 2007 \\x0d\\x0a\\x0d\\x0aselect * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx\', \'select * from [Sheet1$]\') \\x0d\\x0aselect * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx\', [Sheet1$]) \\x0d\\x0aselect * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx\')...[Sheet1$] \\x0d\\x0aselect * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Data Source=D:\2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"\')...[Sheet1$] \\x0d\\x0a注:\\x0d\\x0a\\x0d\\x0aExcel 2007 工作簿文件的扩展名是:xlsx\\x0d\\x0a\\x0d\\x0aHDR=Yes/No\\x0d\\x0a\\x0d\\x0a可选参数,指定 Excel 表的第一行是否列名,缺省为 Yes,可以在注册表中修改缺省的行为。\\x0d\\x0a\\x0d\\x0aIMEX=1\\x0d\\x0a\\x0d\\x0a可选参数,将 Excel 表中混合 Intermixed 数据类型的列强制解析为文本。

如何将 Excel 电子表格导入 SQL Server?

【中文标题】如何将 Excel 电子表格导入 SQL Server?【英文标题】:How do I import an excel spreadsheet into SQL Server? 【发布时间】:2010-10-03 03:01:02 【问题描述】:

我需要将 Excel 电子表格导入 SQL Server 2005。我需要采取哪些步骤来完成此操作?

【问题讨论】:

您使用的是什么版本的 SQL Server? 【参考方案1】:

“数据转换服务”向导是您的朋友。

此处的说明假设 SQL Server 2000

打开 SQL Server 企业管理器 右键单击相应的服务器 选择导入数据 运行向导。 在第一个屏幕上单击下一步 选择“Microsoft Excel”作为您的数据源 输入 XLS 文件的路径并点击下一步。 输入数据库的连接详细信息,然后单击下一步。

根据您要对数据执行的操作,您有几个新选项。对于一次性工作,我通常发现最简单的方法是导入所有 Excel 数据,然后在 SQL Server 中对其进行编辑,但如果您要对多个文件重复此操作,您可能需要制作一个非常性感的导入脚本。

如果要再次运行它,可以使用向导保存 DTS 包,然后在企业管理器的“数据转换服务”部分进行编辑。这是了解 DTS 工作原理的好方法。

【讨论】:

完美!这是正确的答案。 DTS 的好处是您不必在导入数据之前预先创建表。不错。【参考方案2】:

您也可以使用 OPENROWSET 来做到这一点

INSERT INTO SOMETABLE SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\testing.xls','SELECT * FROM [Sheet1$]')

【讨论】:

【参考方案3】:

另一种快速且(非常)肮脏的解决方案是将公式添加到 Excel 工作表,如下所示:

="INSERT INTO table1(col1, col2, col3) SELECT " & A1 & ", '" & B1 & "', '" & C1 & "'"

复制下来 (CTRL+D) 就可以了。

【讨论】:

【参考方案4】:

如果您的电子表格没有很好地组织成一对一的 SQL 表导入(例如,为了便于阅读而设置了子标题、空格、累加器列等),那么有现成的工具你可以用来做这种事情。有关示例,请参阅Khronos Excel Pump。免责声明 - 我为销售此产品的公司工作。它非常可配置,因此您可以将电子表格保持在人工布局中,并且仍然可以可靠地导入结构化 SQL 表,包括用标识字段值替换文本值或将宽网格旋转到窄表等。

【讨论】:

以上是关于sqlserver如何导入excel数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何将excel导入到sqlserver数据库

如何把SQLServer表数据导出为Excel文件

如何把excel数据导入sqlserver数据库中

如何高效地批量导入数据到SqlServer

如何高效地批量导入数据到SqlServer

如何把SQLServer表数据导出为Excel文件