excel导入数据库路径参数问题?
我在存储过程中写 insert into test SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'DataSource="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$] 可以运行,但不知道如何把c:\Finance\account.xls换成参数,怎么写啊?另外导入时EXCEL文件的列是怎么控制对应表里的列的,高人们指点一二。
用convert/cast
convert(varchar,列A)
SELECT cast (列A as int),cast(列B as varchar) FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'DataSource="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$] 可以运行,但不知道如何把c:\Finance\account.xls
declare @path char(100),@sql char(500);
set @path = '"c:\Finance\account.xls"'
set @sql='insert into test SELECT * FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'', ''DataSource='+rtrim(@path)+';User ID=Admin;Password=;Extended properties=Excel 5.0'')...[sheet1$]'
exec(@sql)
为什么我设置参数后它会报错:
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。
[OLE/DB provider returned message: 找不到可安装的 ISAM。]
能不能完整一点呢?比如我想到如一张表:
列名:A B
1 2
3 4
到TEST表中:A B。
declare @path char(100),@sql char(500);
set @path = '"c:\Finance\account.xls"'
set @sql='insert into test SELECT * FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'', ''Data Source='+rtrim(@path)+';User ID=Admin;Password=;Extended properties=Excel 5.0'')...sheet1$'
exec(@sql)
微小的差别:
DataSource='+rtrim(@path)+';
Data Source='+rtrim(@path)+';
又试了一下,后面sheet1$与[sheet1$]应该没有区别,纳闷的是首行没有导入,难道被当做列名了.
--加个 HDR=NO 的选项, 表示第1行是数据, 默认为YES, 表示第1行是字段名
declare @path char(100),@sql char(500);
set @path = '"c:\Finance\account.xls"'
set @sql='insert into test SELECT * FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'', ''Data Source='+rtrim(@path)+';User ID=Admin;Password=;HDR=NO;Extended properties=Excel 5.0'')...sheet1$'
exec(@sql)
试了一下,加上后有以下错误提示:
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。
[OLE/DB provider returned message: 找不到可安装的 ISAM。]
请问怎么处理?
declare @path char(100),@sql char(500);
set @path = '"c:\Finance\account.xls"'
set @sql='insert into test
select * from
OPENROWSET(''MICROSOFT.JET.OLEDB.4.0''
,''Excel 8.0;IMEX=1;HDR=NO;DATABASE=' + @path + '''
,sheet1$)'
exec(@sql)
我导入是没有问题啊,只是不会做字段之间的匹配啊,没看到大家有什么好主意啊。