标题:用sql語句導入execl數據出錯
只看楼主
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
 问题点数:0 回复次数:8 
用sql語句導入execl數據出錯
下面為什麼出錯啊!請各位幫幫忙.


SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:11.xls";Extended properties=Excel 8.0')...sheet1$

提示错误:OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不包含表 'sheet1$'。该表可能不存在,或当前用户没有使用该表的权限。
OLE DB 错误跟踪[Non-interface error: OLE DB provider does not contain the table: ProviderName='Microsoft.Jet.OLEDB.4.0', TableName='sheet1$']。
搜索更多相关主题的帖子: execl sql 
2007-09-03 14:30
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 

帮助----

语法
OPENDATASOURCE ( provider_name, init_string )

备注
仅当 DisallowAdhocAccess 注册表选项针对指定的提供程序显式设置为 0,并且启用 Ad Hoc Distributed Queries 高级配置选项时,OPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。如果未设置这些选项,则默认行为不允许即席访问。

OPENDATASOURCE 函数可以在能够使用链接服务器名的相同 Transact-SQL 语法位置中使用。因此,可以将 OPENDATASOURCE 用作四部分名称的第一部分,该部分名称引用 SELECT、INSERT、UPDATE 或 DELETE 语句中的表或视图的名称;或者引用 EXECUTE 语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE 应该引用 SQL Server 的另一个实例。OPENDATASOURCE 不接受参数变量。

与 OPENROWSET 函数类似,OPENDATASOURCE 应该只引用那些不经常访问的 OLE DB 数据源。对于访问次数较频繁的任何数据源,请为它们定义链接服务器。无论 OPENDATASOURCE 还是 OPENROWSET 都不能提供链接服务器定义的全部功能,例如,安全管理以及查询目录信息的功能。每次调用 OPENDATASOURCE 时,都必须提供所有的连接信息(包括密码)。

注意:
OPENDATASOURCE 不应该用于连接字符串中的显式密码。

参数
provider_name
注册为用于访问数据源的 OLE DB 访问接口的 PROGID 的名称。provider_name 的数据类型为 char,无默认值。

init_string
连接字符串,该字符串将要传递给目标提供程序的 IDataInitialize 接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:“keyword1=value; keyword2=value”。

若要了解提供程序上支持的特定关键字值对,请参阅 Microsoft Data Access SDK。该文档定义了基本语法。下表列出了 init_string 参数中最常用的关键字。

关键字 OLE DB 属性 有效值和说明
数据源
DBPROP_INIT_DATASOURCE
要连接的数据源的名称。不同的提供程序用不同的方法对此进行解释。对于 SQL 本机客户端 OLE DB 访问接口来说,这指示服务器的名称。对于 Jet OLE DB 访问接口来说,这指示 .mdb 文件或 .xls 文件的完整路径。

位置
DBPROP_INIT_LOCATION
要连接的数据库的位置。

扩展属性
DBPROP_INIT_PROVIDERSTRING
提供程序特定的连接字符串。

连接超时
DBPROP_INIT_TIMEOUT
达到该超时值后,连接尝试将失败。

用户 ID
DBPROP_AUTH_USERID
用于该连接的用户 ID。

密码
DBPROP_AUTH_PASSWORD
用于该连接的密码。

目录
DBPROP_INIT_CATALOG
连接到数据源时的初始或默认的目录名称。

集成安全性
DBPROP_AUTH_INTEGRATED
SSPI,指定 Windows 身份验证


2007-09-03 15:36
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
得分:0 
這是幫助啊!

拥有蓝天的白云,拥有你的我.
2007-09-03 15:54
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
恩。。

2007-09-03 19:28
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
得分:0 
是不是不能實現啊

拥有蓝天的白云,拥有你的我.
2007-09-14 17:20
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="e:\temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet1$

我的msn: myfend@
2007-09-14 17:47
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
得分:0 

SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="C:\Book1.xls";User ID=sa;Password=razorcnsa;Extended properties=Excel 5.0')...sheet1$

錯誤;
伺服器: 訊息 7399,層級 16,狀態 1,行 1
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。验证失败。
[OLE/DB provider returned message: 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。]
OLE DB 错误跟踪[OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IDBInitialize::Initialize returned 0x80040e4d: 验证失败。]。


拥有蓝天的白云,拥有你的我.
2007-09-18 10:59
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="C:\1.xls";User ID=sa;Password=hushimiao;Extended properties=Excel 5.0')...sheet1$

链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。"。
消息 7399,级别 16,状态 1,第 2 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。身份验证失败。
消息 7303,级别 16,状态 1,第 2 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。

2007-09-18 14:29
心中有剑
Rank: 2
等 级:新手上路
威 望:5
帖 子:611
专家分:0
注 册:2007-5-18
得分:0 

/******* 导出到excel

EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'

/*********** 导入Excel

SELECT *

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

/*动态文件名

declare @fn varchar(20),@s varchar(1000)

set @fn = 'c:\test.xls'

set @s ='''Microsoft.Jet.OLEDB.4.0'',

''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''

set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'

exec(@s)

*/

SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+'' 转换后的别名

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

/********************** EXCEL导到远程SQL

insert OPENDATASOURCE(

'SQLOLEDB',

'Data Source=远程ip;User ID=sa;Password=密码'

).库名.dbo.表名 (列名1,列名2)

SELECT 列名1,列名2

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions


[此贴子已经被作者于2007-9-19 8:53:11编辑过]


2007-09-19 08:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-167389-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.283933 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved