SQLServer存储同步本地Execl到数据库
上存储
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO --将读取文件导入数据库 CREATE procedure PROC_GDCRMA_ImportData @SavePath VARCHAR(200) = '',--文件保存的路径 @FilePath VARCHAR(500) = ''--文件 AS BEGIN DECLARE @delCmd VARCHAR(5000) = 'del ' + @SavePath + 'G.xlsx' SELECT @delCmd EXEC xp_cmdshell @delCmd DECLARE @copyCmd VARCHAR(5000) = 'copy "' + @FilePath + '" ' + @SavePath + 'G2.xlsx' SELECT @copyCmd EXEC xp_cmdshell @copyCmd DECLARE @file VARCHAR(200) SET @file = @SavePath + 'G2.xlsx' SELECT @file DECLARE @sql VARCHAR(8000) SET @sql = N' INSERT INTO dbo.Test( Name,CreateDate) SELECT [Name Code],CONVERT(VARCHAR(50),GETDATE(),25) FROM OPENDATASOURCE(''Microsoft.ACE.OLEDB.12.0'', ''Data Source="'+ @file +'";Extended Properties=''''Excel 12.0 XML;HDR=YES; IMEX=1'''''')...GDC$ '; EXEC (@sql); exec xp_cmdshell 'ren D:\Syn\Data\DellExecl\GDC\G2.xlsx "G.xlsx"' end GO
注:
1.这里执行存储的时候,可能需要注意对应路径下是否有文件【G.xlsx】和【G2.xlsx】,不然会提示是找不到导致执行不下去
2.执行对应目录的文件夹权限要打开,以及Execl文件不要运行不然汇报错误代码
3.记得安装【Microsoft.ACE.OLEDB.12.0】
4.Execl的表头列名有长度限制的(查了下,截取到了64位--可能我的系统是64的,32的不知道)
5.注意数据字段长度,好像过长的变成NText类型了