EXCEL2007导入SQL2008的问题

时间:2021-08-13 09:30:46
想把一个EXCEL2007表导入SQL中一个表中,在论坛中搜了好几个方法,可都提示错误。

SELECT *  INTO  H
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.8.0',
  'Data Source="C:\H.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...sheet1

提示错误:

消息 7403,级别 16,状态 1,第 2 行
尚未注册 OLE DB 访问接口 "Microsoft.Jet.OLEDB.8.0"。

系统已装OFFICE2007,整两天也没整明白,请大虾帮看下该怎么改 EXCEL2007导入SQL2008的问题


10 个解决方案

#1


对于不同的Excel版本,有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。
Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。
ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。

你用这个试下:
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\1.xlsx')...[Sheet1$]

#2


消息 7308,级别 16,状态 1,第 1 行
因为 OLE DB 访问接口 'Microsoft.ACE.OLEDB.12.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。


EXCEL2007导入SQL2008的问题还是不行

#3


现在怎么跟以前不一样了,以前导过可以的,现在不知哪变了一样

#4


select * from OpenDataSource('Microsoft.ACE.OLEDB.8.0',
    'Excel 12.0;HDR=Yes;IMEX=1;Database=F:\H.xlsx')...[Sheet1$]

改成8.0提示:
消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "Microsoft.ACE.OLEDB.8.0"。

#5


下载安装AccessDatabaseEngine2007驱动.
地址 http://www.microsoft.com/zh-cn/download/details.aspx?id=23734

再执行我#1的SQL

#6


我不知哪里出问题,OFFICE2007我重装3次了,这次装完后,任务管理器的进程里还是显示“EXCEL.EXE *32",下载安装了AccessDatabaseEngine2007驱动,运行下面的命令还是不成功 EXCEL2007导入SQL2008的问题

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
  
EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO
  
INSERT   INTO  H

  select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=Yes;IMEX=1;Database=C:\H.xlsx')...[Sheet1$]
    
(表H现 已提前删除。可以直接建表H并插入值,也可以先建好表H再插入值,其实H只有一列数据)
--------------------------------------------------------------------------------------

提示:

消息 7308,级别 16,状态 1,第 3 行
因为 OLE DB 访问接口 'Microsoft.ACE.OLEDB.12.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。

#7


SELECT @@VERSION 看看你的 sql server 是 32 还是 64 位的,ACE 必须匹配这个

#8


引用 7 楼 zjcxc 的回复:
SELECT @@VERSION 看看你的 sql server 是 32 还是 64 位的,ACE 必须匹配这个


Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)   Jul  9 2008 14:17:44   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 

#9


是64位的吧,任务管理器进程里显示MSACCESS.EXE*32,请教大虾,这得怎么改 EXCEL2007导入SQL2008的问题

#10


是不是OFFICE是32位的而SQL是64位的不能导?

#1


对于不同的Excel版本,有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。
Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。
ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。

你用这个试下:
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\1.xlsx')...[Sheet1$]

#2


消息 7308,级别 16,状态 1,第 1 行
因为 OLE DB 访问接口 'Microsoft.ACE.OLEDB.12.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。


EXCEL2007导入SQL2008的问题还是不行

#3


现在怎么跟以前不一样了,以前导过可以的,现在不知哪变了一样

#4


select * from OpenDataSource('Microsoft.ACE.OLEDB.8.0',
    'Excel 12.0;HDR=Yes;IMEX=1;Database=F:\H.xlsx')...[Sheet1$]

改成8.0提示:
消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "Microsoft.ACE.OLEDB.8.0"。

#5


下载安装AccessDatabaseEngine2007驱动.
地址 http://www.microsoft.com/zh-cn/download/details.aspx?id=23734

再执行我#1的SQL

#6


我不知哪里出问题,OFFICE2007我重装3次了,这次装完后,任务管理器的进程里还是显示“EXCEL.EXE *32",下载安装了AccessDatabaseEngine2007驱动,运行下面的命令还是不成功 EXCEL2007导入SQL2008的问题

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
  
EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO
  
INSERT   INTO  H

  select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=Yes;IMEX=1;Database=C:\H.xlsx')...[Sheet1$]
    
(表H现 已提前删除。可以直接建表H并插入值,也可以先建好表H再插入值,其实H只有一列数据)
--------------------------------------------------------------------------------------

提示:

消息 7308,级别 16,状态 1,第 3 行
因为 OLE DB 访问接口 'Microsoft.ACE.OLEDB.12.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。

#7


SELECT @@VERSION 看看你的 sql server 是 32 还是 64 位的,ACE 必须匹配这个

#8


引用 7 楼 zjcxc 的回复:
SELECT @@VERSION 看看你的 sql server 是 32 还是 64 位的,ACE 必须匹配这个


Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)   Jul  9 2008 14:17:44   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 

#9


是64位的吧,任务管理器进程里显示MSACCESS.EXE*32,请教大虾,这得怎么改 EXCEL2007导入SQL2008的问题

#10


是不是OFFICE是32位的而SQL是64位的不能导?