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

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

示例表结构和数据集

示例表结构和数据集

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

为了演示和比较各种数据导入方法,我假定数据导入任务是将外部文件数据导入到
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,建议,增设公交线路

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,表结构如下:

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

Name Null? Type Comment———— ——— ————-
—————–CALL_ID NOT NULL NUMBER Primary keyCALL_DATE NOT NULL
DATE Non-unique indexEMP_ID NOT NULL NUMBERCALL_TYPE NOT NULL
VARCHAR2(12)DETAILS VARCHAR2(25)

Name Null? Type Comment———— ——— ————-
—————–CALL_ID NOT NULL NUMBER Primary keyCALL_DATE NOT NULL
DATE Non-unique indexEMP_ID NOT NULL NUMBERCALL_TYPE NOT NULL
VARCHAR2(12)DETAILS VARCHAR2(25)

逐条数据插入INSERT

逐条数据插入INSERT

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

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

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

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

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注