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

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:\20191217\123.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:\20191217\123.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 N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    --允许动态参数
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1

       --不允许在进程中使用ACE.OLEDB.12
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0
    --不允许动态参数
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 0

 

posted @ 2019-12-17 16:31  儿歌三百首  阅读(320)  评论(0编辑  收藏  举报