怎样将excel数据导入SQL2008?

时间:2021-08-29 09:31:55
操作系统 win7 64
SQL 2008 64

我希望能将excel中的数据导入到sql
在尝试语句:

select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\myfile.xls',sheet1$)

时遇到:

消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0"。

不知如何解决,求指点。

29 个解决方案

#1


和导入sql 2000/2005一样.以下资料自己参考:
SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT * 
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

2、将Excel的数据导入SQL server :
-- ======================================================
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
实例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

3、将SQL SERVER中查询到的数据导成一个Excel文件
-- ======================================================
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中应用ADO导出EXCEL文件代码: 
Dim cn  As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
------------------------------------------------------------------------------------------------

4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:
INSERT INTO  
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',  
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  
(bestand, produkt) VALUES (20, 'Test')  
-------------------------------------------------------------------------------------------------

#2


建议你的机器最好先安装相应版本的office.

#3


回楼上:

用2楼的语法仍然出现:

消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0"。

另:机器中已安装office2010

#4


我之所以要强调2008,是因为有人在2005里搞定了:
http://hi.baidu.com/%D5%DB%B1%F0/blog/item/ddcc6e09e8828cda3ac763a3.html

但SQL2008不支持“DatabaseEngine ”

#5


查看你的  服务器对象---链接服务器--访问接口 下是否 有  “MICROSOFT.JET.OLEDB.4.0”,没有就安装
这个 AccessDatabaseEngine  工具,然后再执行SQL 就没有问题了。安装完 AccessDatabaseEngine  这个工具后会 有 “Microsoft.ACE.OLEDB.12.0”,如果用 “MICROSOFT.JET.OLEDB.4.0” 还是不行的话 换成“Microsoft.ACE.OLEDB.12.0“  这个 ,这是SQL 2008 以后 执行EXCEL导入导出的写法。
这个 AccessDatabaseEngine 才25M 可以到官方下载

#6


同楼上

#7


5楼方法还是不行哟!

#8


试了把情况列出来看了,才好解决呀

#9


启用 Ad Hoc Distributed Queries  选项
sp_configure 'show advanced options',1
reconfigure 
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

#10




INSERT INTO t select 
w4code,w4phno,W4PDSC  FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\SoftPhase.xls',sheet1$)

#11


安装OFFice

#12


外出才回来
正在下载AccessDatabaseEngine 
试了之后再来回贴

#13


试了5楼的方法,和7楼一样,仍然不行,具体如下:
从官网上下载了AccessDatabaseEngine_X64.exe(应该没错吧,我是64位win7)
安装过程没什么可设置的地方,一路点下来,重启
接着在SQL Server Management Studio里看到“链接服务器”下面的“访问接口”,未多出任何东西,心里凉了半截。
果然,用“MICROSOFT.JET.OLEDB.4.0”报错信息仍为
消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0"。

改用“Microsoft.ACE.OLEDB.12.0”出错信息变为:
消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0"。

#14


引用 9 楼  的回复:
SQL code
启用 Ad Hoc Distributed Queries  选项
sp_configure 'show advanced options',1
reconfigure 
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
这个怎么用?在哪里执行它?
不好意思,这个问题有点小白

#15


安装AccessDatabaseEngine_x64.exe

我是win7+office2010+sql2008r2,装这个搞定.

另:9楼说的系统选项要启用喔.

#16


在SQL Server Management Studio里
把以下4行粘贴进去:

sp_configure 'show advanced options',1
reconfigure 
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

按F5,得到出错信息:
消息 102,级别 15,状态 1,第 3 行
'sp_configure' 附近有语法错误。

我该怎么办?
本帖可能要到清明后结了,积极参与的朋友都会有分。
能指导我解决这个问题的,另送200分。

#17


楼主可以私信找我,我把这个安装包传给你吧.
怎样将excel数据导入SQL2008?

#18


引用 15 楼  的回复:
安装AccessDatabaseEngine_x64.exe

我是win7+office2010+sql2008r2,装这个搞定.

另:9楼说的系统选项要启用喔.
我的情况和你完全一样!
看来是卡在系统选项这里了
怎么启用相关系统选项?

#19


引用 17 楼  的回复:
楼主可以私信找我,我把这个安装包传给你吧.
AccessDatabaseEngine_x64.exe我已经安装了

#20


MD!犯了个低级错误!!
现在已经有点眉目了 ^_^
过完节来结帖,先闪人回家啦。。。。。

#21


我也遇到这个问题了,提示无注册

#22


回复一下,适合如何 回复的哦?

#23


同样问题 看看。。。

#24


楼主弃楼了!

#25


sql 64 +office 64, 测试"Microsoft.ACE.OLEDB.12.0"是可以,就是抽取数据会报错,拒绝了。

#26


可执行的5楼的语句:
EXEC sp_configure 'show advanced option' ,1
RECONFIGURE
EXEC sp_configure 'Ad Hoc Distributed Queries' ,1
RECONFIGURE
直接在查询管理器里面执行。

#27


AccessDatabaseEngine官方下载地址:

http://www.microsoft.com/zh-cn/download/details.aspx?id=13255

#28


 如果您是使用 OLEDB 的应用程序开发人员,请将 ConnectionString 属性的 Provider 参数设置为“Microsoft.ACE.OLEDB.12.0”。 

如果要连接到 Microsoft Office Excel 数据,请根据 Excel 文件类型添加相应的 OLEDB 连接字符串扩展属性: 

文件类型(扩展名)                                             扩展属性
---------------------------------------------------------------------------------------------
Excel 97-2003 工作簿 (.xls)                                  “Excel 8.0”
Excel 2007-2010 工作簿 (.xlsx)                             “Excel 12.0 Xml”
启用宏的 Excel 2007-2010 工作簿 (.xlsm)     “Excel 12.0 宏”
Excel 2007-2010 非 XML 二进制工作簿 (.xlsb)     “Excel 12.0”

如果您是使用 ODBC 连接到 Microsoft Office Access 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file”
如果您是使用 ODBC 连接到 Microsoft Office Excel 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file”

#29


引用 20 楼 DawnPine 的回复:
MD!犯了个低级错误!!
现在已经有点眉目了 ^_^
过完节来结帖,先闪人回家啦。。。。。


你好朋友,这个问题后来解决了吗?我也遇到了,一筹莫展。

#1


和导入sql 2000/2005一样.以下资料自己参考:
SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT * 
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

2、将Excel的数据导入SQL server :
-- ======================================================
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
实例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

3、将SQL SERVER中查询到的数据导成一个Excel文件
-- ======================================================
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中应用ADO导出EXCEL文件代码: 
Dim cn  As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
------------------------------------------------------------------------------------------------

4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:
INSERT INTO  
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',  
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  
(bestand, produkt) VALUES (20, 'Test')  
-------------------------------------------------------------------------------------------------

#2


建议你的机器最好先安装相应版本的office.

#3


回楼上:

用2楼的语法仍然出现:

消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0"。

另:机器中已安装office2010

#4


我之所以要强调2008,是因为有人在2005里搞定了:
http://hi.baidu.com/%D5%DB%B1%F0/blog/item/ddcc6e09e8828cda3ac763a3.html

但SQL2008不支持“DatabaseEngine ”

#5


查看你的  服务器对象---链接服务器--访问接口 下是否 有  “MICROSOFT.JET.OLEDB.4.0”,没有就安装
这个 AccessDatabaseEngine  工具,然后再执行SQL 就没有问题了。安装完 AccessDatabaseEngine  这个工具后会 有 “Microsoft.ACE.OLEDB.12.0”,如果用 “MICROSOFT.JET.OLEDB.4.0” 还是不行的话 换成“Microsoft.ACE.OLEDB.12.0“  这个 ,这是SQL 2008 以后 执行EXCEL导入导出的写法。
这个 AccessDatabaseEngine 才25M 可以到官方下载

#6


同楼上

#7


5楼方法还是不行哟!

#8


试了把情况列出来看了,才好解决呀

#9


启用 Ad Hoc Distributed Queries  选项
sp_configure 'show advanced options',1
reconfigure 
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

#10




INSERT INTO t select 
w4code,w4phno,W4PDSC  FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\SoftPhase.xls',sheet1$)

#11


安装OFFice

#12


外出才回来
正在下载AccessDatabaseEngine 
试了之后再来回贴

#13


试了5楼的方法,和7楼一样,仍然不行,具体如下:
从官网上下载了AccessDatabaseEngine_X64.exe(应该没错吧,我是64位win7)
安装过程没什么可设置的地方,一路点下来,重启
接着在SQL Server Management Studio里看到“链接服务器”下面的“访问接口”,未多出任何东西,心里凉了半截。
果然,用“MICROSOFT.JET.OLEDB.4.0”报错信息仍为
消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0"。

改用“Microsoft.ACE.OLEDB.12.0”出错信息变为:
消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0"。

#14


引用 9 楼  的回复:
SQL code
启用 Ad Hoc Distributed Queries  选项
sp_configure 'show advanced options',1
reconfigure 
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
这个怎么用?在哪里执行它?
不好意思,这个问题有点小白

#15


安装AccessDatabaseEngine_x64.exe

我是win7+office2010+sql2008r2,装这个搞定.

另:9楼说的系统选项要启用喔.

#16


在SQL Server Management Studio里
把以下4行粘贴进去:

sp_configure 'show advanced options',1
reconfigure 
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

按F5,得到出错信息:
消息 102,级别 15,状态 1,第 3 行
'sp_configure' 附近有语法错误。

我该怎么办?
本帖可能要到清明后结了,积极参与的朋友都会有分。
能指导我解决这个问题的,另送200分。

#17


楼主可以私信找我,我把这个安装包传给你吧.
怎样将excel数据导入SQL2008?

#18


引用 15 楼  的回复:
安装AccessDatabaseEngine_x64.exe

我是win7+office2010+sql2008r2,装这个搞定.

另:9楼说的系统选项要启用喔.
我的情况和你完全一样!
看来是卡在系统选项这里了
怎么启用相关系统选项?

#19


引用 17 楼  的回复:
楼主可以私信找我,我把这个安装包传给你吧.
AccessDatabaseEngine_x64.exe我已经安装了

#20


MD!犯了个低级错误!!
现在已经有点眉目了 ^_^
过完节来结帖,先闪人回家啦。。。。。

#21


我也遇到这个问题了,提示无注册

#22


回复一下,适合如何 回复的哦?

#23


同样问题 看看。。。

#24


楼主弃楼了!

#25


sql 64 +office 64, 测试"Microsoft.ACE.OLEDB.12.0"是可以,就是抽取数据会报错,拒绝了。

#26


可执行的5楼的语句:
EXEC sp_configure 'show advanced option' ,1
RECONFIGURE
EXEC sp_configure 'Ad Hoc Distributed Queries' ,1
RECONFIGURE
直接在查询管理器里面执行。

#27


AccessDatabaseEngine官方下载地址:

http://www.microsoft.com/zh-cn/download/details.aspx?id=13255

#28


 如果您是使用 OLEDB 的应用程序开发人员,请将 ConnectionString 属性的 Provider 参数设置为“Microsoft.ACE.OLEDB.12.0”。 

如果要连接到 Microsoft Office Excel 数据,请根据 Excel 文件类型添加相应的 OLEDB 连接字符串扩展属性: 

文件类型(扩展名)                                             扩展属性
---------------------------------------------------------------------------------------------
Excel 97-2003 工作簿 (.xls)                                  “Excel 8.0”
Excel 2007-2010 工作簿 (.xlsx)                             “Excel 12.0 Xml”
启用宏的 Excel 2007-2010 工作簿 (.xlsm)     “Excel 12.0 宏”
Excel 2007-2010 非 XML 二进制工作簿 (.xlsb)     “Excel 12.0”

如果您是使用 ODBC 连接到 Microsoft Office Access 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file”
如果您是使用 ODBC 连接到 Microsoft Office Excel 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file”

#29


引用 20 楼 DawnPine 的回复:
MD!犯了个低级错误!!
现在已经有点眉目了 ^_^
过完节来结帖,先闪人回家啦。。。。。


你好朋友,这个问题后来解决了吗?我也遇到了,一筹莫展。