始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

探讨Oracle数据库的数据导入方法

发布时间:  2012/7/13 14:26:09
每个数据库管理员都会面临数据导入的问题,这有可能发生在数据库的新老移植过程中,或者是在数据库崩溃后的恢复重建过程中,还有可能是在创建测试数据库的模拟环境过程中,总之作为一名合格的数据库管理员,你应该做好接受各种数据导入请求的技术储备,同时还要尽量满足人本能的对导入速度的苛求。本文仅针对 Oracle 数据库所提供的加速数据导入的各种特性和技术进行探讨,其中的一些方法也可以转化应用于其他数据库。以下七种数据导入方法哪个最适用需要针对具体情况具体分析,我也附带列举了影响导入速度的各种因素供斟酌。为了比较各种数据导入方法的效果,我创建了示例表和数据集,并用各种方法导入示例数据集来计算总体导入时间和导入进程占用 CPU 时间,这里得出的时间仅供参考。需要说明的是,建议你使用 Oracle 9i 企业版数据库,当然你也可以尝试使用 Oracle 7.3 以上的标准版数据库。本文使用的机器配置为:CPU Intel P4,内存 256M,数据库 Oracle 9i 企业版。

  示例表结构和数据集

  为了演示和比较各种数据导入方法,我假定数据导入任务是将外部文件数据导入到 Oracle 数据库的CALLS表中,外部数据文件包含十万条呼叫中心记录,将近 6MB 的文件大小,具体的数据示例如下:

  82302284384,2003-04-18:13:18:58,5001,投诉,手机三包维修质量

  82302284385,2003-04-18:13:18:59,3352,咨询,供水热线的号码

  82302284386,2003-04-18:13:19:01,3142,建议,增设公交线路

  接受导入数据的表名是 CALLS,表结构如下:

以下是代码片段:
    Name Null? Type Comment
  ------------ --------- ------------- -----------------
  CALL_ID NOT NULL NUMBER Primary key
  CALL_DATE NOT NULL DATE Non-unique index
  EMP_ID NOT NULL NUMBER
  CALL_TYPE NOT NULL VARCHAR2(12)
  DETAILS VARCHAR2(25)

  逐条数据插入INSERT

  数据导入的最简单方法就是编写 INSERT 语句,将数据逐条插入数据库。这种方法只适合导入少量数据,如 SQL*Plus 脚本创建某个表的种子数据。该方法的最大缺点就是导入速度缓慢,占用了大量的 CPU 处理时间,不适合大批量数据的导入;而其主要优点就是导入构思简单又有修改完善的弹性,不需要多做其它的准备就可以使用。如果你有很多时间没法打发,又想折磨一下数据库和 CPU,那这种方法正适合你。

  为了与其它方法做比较,现将十万条记录通过此方法导入到 CALLS 表中,总共消耗 172 秒,其中导入进程占用 CPU 时间为 52 秒。

  逐条数据插入 INSERT,表暂无索引

  为什么上一种方法占用了较多的 CPU 处理时间,关键是 CALLS 表中已创建了索引,当一条数据插入到表中时,Oracle 需要判别新数据与老数据在索引方面是否有冲突,同时要更新表中的所有索引,重复更新索引会消耗一定的时间。因此提高导入速度的好办法就是在创建表时先不创建索引或者在导入数据之前删除所有索引,在外部文件数据逐条插入到表中后再统一创建表的索引。这样导入速度会提高,同时创建的索引也很紧凑而有效,这一原则同样适用于位图索引(Bitmap Index)。对于主要的和唯一的关键约束(key constraints),可以使之先暂时失效(disabling)或者删除约束来获得同样的效果,当然这些做法会对已经存在的表的外键约束产生相关的影响,在删除前需要通盘斟酌。


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线