这条语句的功能是将Excel文件导到sql的表上;
SELECT * into ItemTable2
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Inetpub\wwwroot\HRManage\UpLoadFile\测评题库.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...c$ 但是如果用存储过程做,那么传入参数为文件名和表名,但是这条语句本身就有单引号,在查询分析器组织SQL语句会混淆.请高手给出能根据传入文件名和表名而动态组织的SQL语句;
如果能放在程序里解决更好.但请给出能参考的代码.
我的环境是ASP.NET,SQLSERVER;语言是C#;不胜感激~~
SELECT * into ItemTable2
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Inetpub\wwwroot\HRManage\UpLoadFile\测评题库.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...c$ 但是如果用存储过程做,那么传入参数为文件名和表名,但是这条语句本身就有单引号,在查询分析器组织SQL语句会混淆.请高手给出能根据传入文件名和表名而动态组织的SQL语句;
如果能放在程序里解决更好.但请给出能参考的代码.
我的环境是ASP.NET,SQLSERVER;语言是C#;不胜感激~~
create proc sp_d
@tname varchar(20),
@fname varchar(20)
as
declare @s varchar(1000)
select @s='SELECT * into '+@tname+' FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source=c:\Inetpub\wwwroot\HRManage\UpLoadFile\'+@fname+';UserID=Admin;Password=;Extended properties=Excel 5.0'')...c$'
exec @s
goexec sp_d '表名','文件名'
exec动态执行。
名称 'SELECT * into 表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=c:\Inetpub\wwwroot\HRManage\UpLoadFile\文件名;UserID=Admin;Password=;Extended properties=Excel 5.0')...c$' 不是有效的标识符。
不行啊.好象仅仅在字符串里的'号换成''不行.
exec('select * into ##TempTablea from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;DATABASE='+@TempDataPath+''',sheet1$)')insert into @TempTable1(HappenDate,Tick_Name,Account,Cur_Name,Percent1,StartPlace,EndPlace,Reason,Address,Hosts,ClientName,Re)
select 日期,票据种类,金额,币种,百分比,起始地点,到达地点,原因,地点,招待人,客户名,备注 from ##TempTablea
drop table ##TempTablea