1.开启SQL SERVER的'Ad Hoc Distributed Queries'开关,需要用拥有服务器sysadmin角色权限的登录帐号
exec sp_configure 'show advanced options',1;reconfigure; exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
执行后,控制台输出
2.创建临时表T_EXCELTOSQL_TEMP,将excel中数据导入
--导入EXCEL JET引擎:Microsoft.Jet.OLEDB.4.0(导入office97-2003) ACE引擎:Microsoft.ACE.OLEDB.12.0(导入office2007-2010) --Data Source是服务器存放excel的路径 --“一年级”是excel中sheet名,$必填 SELECT * INTO T_EXCELTOSQL_TEMP FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0', 'Data Source="d:\fs.xls";User ID=Admin;Password=;Extended properties=Excel 12.0')...[一年级$]
导入后表结构为
3.根据业务需要,为临时表添加字段
ALTER TABLE T_EXCELTOSQL_TEMP ADD NF VARCHAR(4) null ; --入学年份 ALTER TABLE T_EXCELTOSQL_TEMP ADD BH VARCHAR(2) null ; --班号 ALTER TABLE T_EXCELTOSQL_TEMP ADD BH_INT int null ; --班号int类型 ALTER TABLE T_EXCELTOSQL_TEMP ADD bj_id CHAR(36) null ; --班级ID
4.为新字段赋值
--修改录入相关数据 UPDATE dbo.T_EXCELTOSQL_TEMP SET nf=SUBSTRING(班级名称,1,4),bh=SUBSTRING(班级名称,5,2),BH_INT=CAST(SUBSTRING(班级名称,5,2) AS INT); ---------------------------------------------------------- --多表关联更新 UPDATE t1 SET t1.bj_id=t2.bj_id FROM dbo.T_EXCELTOSQL_TEMP t1 INNER JOIN dbo.T_XG_CLASS t2 ON t1.NF=t2.RXNF AND t1.BH_INT=t2.BH WHERE SCHOOL_ID=100;
5.基本的导入和更新步骤已经完毕,其他根据个人业务操作,执行完成后,因为安全性问题,需要关闭'Ad Hoc Distributed Queries'开关
exec sp_configure 'Ad Hoc Distributed Queries',0; reconfigure;exec sp_configure 'show advanced options',0;reconfigure;
执行结果