WEB开发网
开发学院数据库Oracle Oracle中加速数据导入特性和技术研究 阅读

Oracle中加速数据导入特性和技术研究

 2007-05-10 12:16:37 来源:WEB开发网   
核心提示: 然后将 External Table 与真正被使用的表 CALLS 关联同步,删除 CALLS 表并重建它:CREATE TABLE calls(call_id NUMBER NOT NULL,call_date DATE NOT NULL,emp_id NUMBER NOT NULL,c

然后将 External Table 与真正被使用的表 CALLS 关联同步,删除 CALLS 表并重建它:

CREATE TABLE calls
(
call_id NUMBER NOT NULL,
call_date DATE NOT NULL,
emp_id NUMBER NOT NULL,
call_type VARCHAR2(12) NOT NULL,
details VARCHAR2(25)
)
TABLESPACE tbs1 NOLOGGING
AS
SELECT call_id, call_date, emp_id, call_type, details
FROM calls_external;

因为 CALLS 表是真正的数据库表,可以创建索引来加快访问,表中的数据将被保留,即使外部数据文件被更新或被删除。在建表语句中NOLOGGING关键字用于加快索引重建。

运用这种方法导入数据,总的导入时间为 15 秒,进程占用 CPU 的时间为8秒,这比前一种方法稍微慢些,但不能就此认为使用 External Table 导入数据一定比 OCI 批量插入慢。

这种方法的优点是,未经进行大量的编写代码就取得了不错的结果,不象 OCI 批量插入存在编码错误风险,它还可以使用 dbms_job 包调度数据导入进程,实现数据导入的自动化。其缺点是目标表必须先删除后重建,如果只需要导入增量数据时此方法就不合适了,另外用户在表的重建过程中访问数据时会遇到 "table or view does not exist" 的错误,它仅适用于 Oracle 9i 以上版本的数据库。

INSERT Append as SELECT,使用 Oracle9i 的 External Table

上一种方法演示了如何创建与外部数据文件关联的数据库表,其表的数据是由外部数据文件映射过来。缺点是数据库表需要被先删除再重建来保持与外部数据文件的一致和同步,对导入增量的数据而不需要删除已有数据的情况不合适。针对这种需求,Oracle 提供了 INSERT 语句外带 APPEND 提示来满足。

上一页  1 2 3 4 5 6  下一页

Tags:Oracle 加速 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接