• sql server导入excel和多表关联更新 东师理想


    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;

     执行结果

  • 相关阅读:
    如何查找并启动 Reporting Services 工具
    数据压缩技术
    压缩算法
    新版压缩库发布
    如何处理海量数据
    安卓手机获得Root权限
    安卓项目的源码
    压缩算法1
    ODBC, OLEDB, ADO, ADO.Net的演化简史
    C# 文件压缩与解压(ZIP格式)
  • 原文地址:https://www.cnblogs.com/cczhoufeng/p/2513485.html
Copyright © 2020-2023  润新知