想过一个问题吗?Excel是最常用的存储数据的一个工具,但是当数量过大的时候,查询会多有不便,能不能将Excel和某种数据库打通,便于我们对数据的使用呢?本文将介绍如何能将Excel表格中的数据导入到Oracle。当我们把数据导入到了Oracle中,还能用Excel对其进行更新维护吗?本文也会告诉你一种方法。
成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如纸箱等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致夸奖。
首先提供一种间接的思路:
利用Sql Server和Excel的近亲关系,在Sql Server中利用OpenDataSource方法读取Excel,并把数据拼写成符合oracle的sql语句。
(sql server2005需要手工开启OpenDataSource功能,sql server2005 -> 配置工具 -> 外围应用配置器 -> 功能的外围应用配置器 -> Database Engine -> 即席远程查询,如下图所示)
在sql server中执行如下代码:
需要注意:
1)请提供正确的文件路径和Sheet名称;
2)关闭要读取的Excel文件,否则会报错;
3)确保to_date函数对应的字段在Excel中为日期类型;
用Excel插入、更新Orcale
- 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$]
- -----执行结果如下:-----
- view sourceprint?
- 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中执行上述代码就行了。
原文链接:http://www.cnblogs.com/libinlink/archive/2011/07/12/2104024.html
【编辑推荐】
分享名称:如何用Excel操作Oracle
分享路径:http://www.shufengxianlan.com/qtweb/news21/139021.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联