日期:2014-05-17  浏览次数:20439 次

sql-excel导入问题

declare @p as nvarchar(400)
declare @m as nvarchar(400)
set @p='d:\'
set @m='mndepart.xls'
select @p+@m
--消息 7399,级别 16,状态 1,第 6 行
--链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
--消息 7303,级别 16,状态 1,第 6 行
--无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
select * from OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=@p+@m;
Extended Properties=Excel 5.0')...[Sheet1$];
--可以显示
select * from opendatasource('microsoft.jet.oledb.4.0',
'data source=d:\mndepart.xls;
extended properties=excel 5.0')...[sheet1$];

文件路径不能存到变量里面吗。。
sql,?opendatasource

------解决方案--------------------
'Data Source=@p+@m;
Extended Properties=Excel 5.0'

改成
'Data Source=' +@p+@m+ ';
Extended Properties=Excel 5.0'

变量与字符串是需要用"+"来连接的
------解决方案--------------------
变量应该是‘+@变量+’
------解决方案--------------------
这样就不会报错了:

declare @p as nvarchar(400)
declare @m as nvarchar(400)
declare @sql as nvarchar(max)
set @p='d:\'
set @m='mndepart.xls'

set @sql='select * from OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',''Data Source='+@p+@m+';Extended Properties=Excel 5.0'')...[Sheet1$];'
exec(@sql)