如何用Excel操作Oracle

数据库 Oracle 数据库运维
想过一个问题吗?Excel是最常用的存储数据的一个工具,但是当数量过大的时候,查询会多有不便,能不能将Excel和某种数据库打通,便于我们对数据的使用呢?

想过一个问题吗?Excel是最常用的存储数据的一个工具,但是当数量过大的时候,查询会多有不便,能不能将Excel和某种数据库打通,便于我们对数据的使用呢?本文将介绍如何能将Excel表格中的数据导入到Oracle。当我们把数据导入到了Oracle中,还能用Excel对其进行更新维护吗?本文也会告诉你一种方法。

首先提供一种间接的思路:

利用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

  1. SELECT  'update userinfo set Useducation = ''' 
  2.         + CASE WHEN [现文化程度] IS NULL THEN '' 
  3.                 ELSE [现文化程度] END 
  4.         + CASE WHEN [技术等级] IS NULL THEN '' 
  5.                 ELSE ''', Usskilllevel = ''' + [技术等级] END +  '''' 
  6.         + CASE WHEN [加入党派日期] IS NULL THEN '' 
  7.                 ELSE ', Usdangtuantime = to_date(''' + CONVERT(VARCHAR(12), [加入党派日期], 110)+ ''',''mm-dd-yyyy'')' END 
  8.         + CASE WHEN [入路工作日期] IS NULL THEN '' 
  9.                 ELSE ', Usinputtime = to_date(''' + CONVERT(VARCHAR(12), [入路工作日期], 110)+ ''',''mm-dd-yyyy'')' END 
  10.         + CASE WHEN [出生日期] IS NULL THEN '' 
  11.                 ELSE ', Usbirthdate = to_date(''' + CONVERT(VARCHAR(12), [出生日期], 110)+ ''',''mm-dd-yyyy'')' END             
  12.         + ' where Uscardid =''' + [身份证号] + ''';'              
  13. FROM    OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0'
  14.                        'Data Source=D:\gongren.xls;Extended Properties=Excel 8.0')...[Sheet1$] 
  1. -----执行结果如下:----- 
  2. view sourceprint? 
  3. 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'
  4. 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'
  5. 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

【编辑推荐】

  1. Oracle SQL:经典查询练手
  2. Oracle分页小谈
  3. Oracle数据库11g基准测试中表现卓越
  4. Oracle数据库日常维护知识总结
责任编辑:艾婧 来源: 博客园
相关推荐

2020-12-10 10:46:23

PythonExcel图片

2010-04-20 14:06:56

Oracle SQL语

2011-06-03 10:06:57

MongoDB

2009-06-22 11:52:00

javascriptxml

2011-07-18 14:00:29

RailsOracle

2010-04-16 11:03:02

Oracle存储过程

2017-07-20 21:06:44

PythonExcelSQL

2010-05-06 15:29:53

Oracle数据复制

2011-08-30 17:33:10

OracleSAS宏

2010-04-15 17:58:04

Oracle动态视图

2014-06-10 15:07:19

Oracle数据库优化

2009-03-26 09:24:36

Oracle外键数据库

2009-03-24 13:04:55

汇总组织结构Oracle

2010-04-29 12:39:20

Oracle SELE

2020-02-21 17:10:12

ExcelPython脚本语言

2019-09-18 10:07:24

ExcelSQL数据库

2022-07-15 11:33:01

供应链VR虚拟现实

2009-08-18 16:20:09

C# 操作Excel

2009-08-18 16:14:05

C# 操作Excel

2010-04-22 16:26:07

Oracle 10g
点赞
收藏

51CTO技术栈公众号