如何将数据从 Excel 导入到 SQL Server

如何将数据从 Excel 导入到 SQL Server,第1张

概述本文循序渐进地演示如何用不同的方法将数据从 Microsoft Excel 工作表导入到 Microsoft SQL Server 数据库。 技术说明 本文中的示例使用以下工具导入 Excel 数据: SQL Server 数据传输服务 (DTS) Microsoft SQL Server 2005 Integration Services (SSIS) SQL Server 链接服务器 SQL Server 分布式… 本文循序渐进地演示如何用不同的方法将数据从 Microsoft Excel 工作表导入到 Microsoft sql Server 数据库。

技术说明
本文中的示例使用以下工具导入 Excel 数据:
sql Server 数据传输服务 (DTS)
Microsoft sql Server 2005 Integration Services (SSIS)
sql Server 链接服务器
sql Server 分布式查询
ActiveX 数据对象 (ADO) 和 Microsoft olE DB ProvIDer for sql Server
ADO 和 Microsoft olE DB ProvIDer for Jet 4.0
要求
下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:
Microsoft sql Server 7.0、Microsoft sql Server 2000 或 Microsoft sql Server 2005 的可用实例
Microsoft Visual Basic 6.0(针对使用 Visual Basic 的 ADO 示例)
本文的部分内容假定您熟悉下列主题:
数据传输服务
链接服务器和分布式查询
Visual Basic 中的 ADO 开发
示例
导入与追加
本文使用的示例 sql 语句演示了“创建表”查询。该查询通过使用 SELECT...INTO...FROM 语法将 Excel 数据导入新的 sql Server 表。如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用 INSERT INTO...SELECT...FROM 语法将这些语句转换成追加查询。

使用 DTS 或 SSIS
可以使用“sql Server Data transformation Services (DTS) 导入向导”或“sql Server 导入和导出向导”将 Excel 数据导入到 sql Server 表中。在逐步执行向导并选择 Excel 源表时,要记住附加美元符号 ($) 的 Excel 对象名称代表工作表(例如,Sheet1$),而没有美元符号的普通对象名称代表 Excel 指定的范围。

使用链接服务器
要简化查询,可以将 Excel 工作簿配置为 sql Server 中的链接服务器。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306397 (http://support.microsoft.com/kb/306397/EN-US/ ) 如何:结合 sql Server 链接的服务器和分布式查询使用 Excel
下列代码将 Excel 链接服务器“EXCELlink”上的 Customers 工作表数据导入新的名为 XLimport1 的 sql Server 表:
SELECT * INTO XLimport1 FROM EXCELlink...[Customers$]
还可以通过按照以下方式使用 OPENquery 以全通过方式对源数据执行查询:
SELECT * INTO XLimport2 FROM OPENquery(EXCELlink,
'SELECT * FROM [Customers$]')
使用分布式查询
如果不想将对 Excel 工作簿的永久连接配置为链接服务器,可以通过使用 OPENDATASOURCE 或 OPENROWSET 函数为特定目的导入数据。下列代码示例也能将 Excel Customers 工作表数据导入新的 sql Server 表:
SELECT * INTO XLimport3 FROM OPENDATASOURCE('Microsoft.Jet.olEDB.4.0',
'Data Source=C: estxltest.xls;Extended PropertIEs=Excel 8.0')...[Customers$]

SELECT * INTO XLimport4 FROM OPENROWSET('Microsoft.Jet.olEDB.4.0',
'Excel 8.0;Database=C: estxltest.xls',[Customers$])

SELECT * INTO XLimport5 FROM OPENROWSET('Microsoft.Jet.olEDB.4.0','SELECT * FROM [Customers$]')
使用 ADO 和 sqlolEDB
当通过使用 Microsoft olE DB for sql Server (sqlolEDB) 在 ADO 应用程序中连接到 sql Server 时,可以使用与“使用分布式查询” 一节中相同的“分布式查询”语法将 Excel 数据导入 sql Server。

下列 Visual Basic 6.0 代码示例要求添加对 ActiveX 数据对象 (ADO) 的项目引用。此代码示例还演示了如何在 sqlolEDB 连接上使用 OPENDATASOURCE 和 OPENROWSET。
Dim cn As ADODB.Connection
Dim strsql As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "ProvIDer=sqlolEDB;Data Source=<server>;" & _
"Initial Catalog=<database>;User ID=<user>;Password=<password>"

'import by using OPENDATASOURCE.
strsql = "SELECT * INTO XLimport6 FROM " & _
"OPENDATASOURCE('Microsoft.Jet.olEDB.4.0'," & _
"'Data Source=C: estxltest.xls;" & _
"Extended PropertIEs=Excel 8.0')...[Customers$]"
DeBUG.Print strsql
cn.Execute strsql,lngRecsAff,adExecutenorecords
DeBUG.Print "Records affected: " & lngRecsAff

'import by using OPENROWSET and object name.
strsql = "SELECT * INTO XLimport7 FROM " & _
"OPENROWSET('Microsoft.Jet.olEDB.4.0'," & _
"'Excel 8.0;Database=C: estxltest.xls'," & _
"[Customers$])"
DeBUG.Print strsql
cn.Execute strsql,adExecutenorecords
DeBUG.Print "Records affected: " & lngRecsAff

'import by using OPENROWSET and SELECT query.
strsql = "SELECT * INTO XLimport8 FROM " & _
"OPENROWSET('Microsoft.Jet.olEDB.4.0'," & _
"'SELECT * FROM [Customers$]')"
DeBUG.Print strsql
cn.Execute strsql,adExecutenorecords
DeBUG.Print "Records affected: " & lngRecsAff

cn.Close
Set cn = nothing
使用 ADO 和 Jet ProvIDer
上一节中的示例使用 ADO 和 sqlolEDB ProvIDer 连接到从 Excel 到 sql 导入的目标。也可以使用 olE DB ProvIDer for Jet 4.0 来连接到 Excel 源。

Jet 数据引擎可以通过使用具有三种不同格式的特殊语法来在 sql 语句中引用外部数据库:
[Full path to Microsoft Access database].[table name]
[ISAM name;ISAM Connection String].[table name]
[ODBC;ODBC Connection String].[table name]
本节使用第三种格式创建到目标 sql Server 数据库的 ODBC 连接。可以使用 ODBC 数据源名称 (DSN) 或者 DSN-less 连接字符串:
DSN:
[odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]

DSN-less:
[odbc;Driver={sql Server};Server=<server>;Database=<database>;
UID=<user>;PWD=<password>]
下列 Visual Basic 6.0 代码示例要求添加对 ADO 的项目引用。此代码示例演示了如何使用 Jet 4.0 ProvIDer 通过 ADO 连接将 Excel 数据导入到 sql Server。
Dim cn As ADODB.Connection
Dim strsql As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "ProvIDer=Microsoft.Jet.olEDB.4.0;" & _
"Data Source=C: estxltestt.xls;" & _
"Extended PropertIEs=Excel 8.0"

'import by using Jet ProvIDer.
strsql = "SELECT * INTO [odbc;Driver={sql Server};" & _
"Server=<server>;Database=<database>;" & _
"UID=<user>;PWD=<password>].XLimport9 " & _
"FROM [Customers$]"
DeBUG.Print strsql
cn.Execute strsql,adExecutenorecords
DeBUG.Print "Records affected: " & lngRecsAff

cn.Close
Set cn = nothing
也可以通过使用该语法(Jet ProvIDer 支持)将 Excel 数据导入其他 Microsoft Access 数据库、索引顺序存取方法 (ISAM)(“desktop”)数据库或 ODBC 数据库。 总结

以上是内存溢出为你收集整理的如何将数据从 Excel 导入到 SQL Server全部内容,希望文章能够帮你解决如何将数据从 Excel 导入到 SQL Server所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1155809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存