sql server游标读取excel文件数据,更新到指定表中

时间:2022-01-18 06:57:03

begin
declare @a int,@error int   
DECLARE @EBSCode nvarchar(50)
DECLARE @EBSName nvarchar(50)
DECLARE @FilePath nvarchar(200)
  set @a=1
    set @error=0

DECLARE table_cursor CURSOR FOR
     (select * from OpenDataSource (Microsoft.Ace.OLEDB.12.0,Data Source="D:20191217123.xlsx";Extended properties="Excel 12.0;HDR=Yes")...[sheet1$])
         
OPEN table_cursor
 
FETCH NEXT FROM table_cursor into @EBSCode,@EBSName,@FilePath
 
WHILE @@FETCH_STATUS=0
BEGIN
    update Basic_ModelImport set FilePath=/jfiles/upload/20191217/ @FilePath where IsDeleted=0 and [Type]=0 and TenantId=1 and EBSCode=@EBSCode
     set @a=@a 1
            set @error= @error   @@ERROR   --记录每次运行sql后是否正确,0正确
FETCH NEXT FROM table_cursor into @EBSCode,@EBSName,@FilePath
END
 
CLOSE table_cursor
DEALLOCATE table_cursor
end
go

select * from OpenDataSource (Microsoft.Ace.OLEDB.12.0,Data Source="D:20191217123.xlsx";Extended properties="Excel 12.0;HDR=Yes")...[sheet1$]




--开启
exec sp_configure show advanced options,1
reconfigure
exec sp_configure Ad Hoc Distributed Queries,1
reconfigure

--关闭
exec sp_configure Ad Hoc Distributed Queries,0
reconfigure
exec sp_configure show advanced options,0
reconfigure

 --允许在进程中使用ACE.OLEDB.12
    EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NAllowInProcess, 1
    --允许动态参数
    EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NDynamicParameters, 1

       --不允许在进程中使用ACE.OLEDB.12
    EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NAllowInProcess, 0
    --不允许动态参数
    EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NDynamicParameters, 0