• Excel插入、更新Orcale


    如何才能把Excel中的数据导入Orcale中呢?

    本文提供一种间接的思路:

    利用Sql Server和Excel的近亲关系,在Sql Server中利用OpenDataSource方法读取Excel,并把数据拼写成符合oracle的sql语句。

    (sql server2005需要手工开启OpenDataSource功能,

    sql server2005 -> 配置工具 -> 外围应用配置器 -> 功能的外围应用配置器 -> Database Engine -> 即席远程查询,

    如下图所示)

    配置sql server2005即席远程查询功能

    在sql server中执行如下代码:

    需要注意:

    1)请提供正确的文件路径和Sheet名称;

    2)关闭要读取的Excel文件,否则会报错;

    3)确保to_date函数对应的字段在Excel中为日期类型;

    SELECT  'update userinfo set Useducation = '''
            + CASE WHEN [现文化程度] IS NULL THEN '' 
    				ELSE [现文化程度] END 
            + CASE WHEN [技术等级] IS NULL THEN '' 
    				ELSE ''', Usskilllevel = ''' + [技术等级] END +  ''''
            + CASE WHEN [加入党派日期] IS NULL THEN '' 
    				ELSE ', Usdangtuantime = to_date(''' + CONVERT(VARCHAR(12), [加入党派日期], 110)+ ''',''mm-dd-yyyy'')' END
    		+ CASE WHEN [入路工作日期] IS NULL THEN '' 
    				ELSE ', Usinputtime = to_date(''' + CONVERT(VARCHAR(12), [入路工作日期], 110)+ ''',''mm-dd-yyyy'')' END
    		+ CASE WHEN [出生日期] IS NULL THEN '' 
    				ELSE ', Usbirthdate = to_date(''' + CONVERT(VARCHAR(12), [出生日期], 110)+ ''',''mm-dd-yyyy'')' END				
            + ' where Uscardid =''' + [身份证号] + ''';'              
    FROM    OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
                           'Data Source=D:\gongren.xls;Extended Properties=Excel 8.0')...[Sheet1$]
    

    执行结果如下:

    update userinfo set Useducation = '中等专科', Usinputtime = to_date('12-25-2000','mm-dd-yyyy'), Usbirthdate = to_date('09-06-1976','mm-dd-yyyy') where Uscardid ='132430197609061413';
    update userinfo set Useducation = '大学', Usskilllevel = '中级工', Usdangtuantime = to_date('07-11-2000','mm-dd-yyyy'), Usinputtime = to_date('07-01-2003','mm-dd-yyyy'), Usbirthdate = to_date('08-21-1979','mm-dd-yyyy') where Uscardid ='132826197908210332';
    update userinfo set Useducation = '大专', Usskilllevel = '高级工', Usdangtuantime = to_date('07-03-2001','mm-dd-yyyy'), Usinputtime = to_date('01-01-2005','mm-dd-yyyy'), Usbirthdate = to_date('10-26-1980','mm-dd-yyyy') where Uscardid ='132421198006260032';
    

    在pl/sql中执行上述代码就行了。

  • 相关阅读:
    ZJOI 2019 划水记
    【博弈论】浅谈泛Nim游戏
    HZNU ACM一日游 2019.3.17 【2,4,6-三硝基甲苯(TNT)】
    BZOJ 1008 越狱 组合数学
    BZOJ 1036 树的统计Count 树链剖分模板题
    BZOJ 1012 最大数maxnumber 线段树
    BZOJ 1001 狼抓兔子 平面图的最小割
    SGU---107 水题
    欧拉回路模板
    hdu-3397 Sequence operation 线段树多种标记
  • 原文地址:https://www.cnblogs.com/BingoLee/p/2104024.html
Copyright © 2020-2023  润新知