前几天有个朋友在MSN上问如何能更快速的从数据库中卸载和加载数据他原来是用sql查询spool出来效率很低
这让我想起DCBA的一个工具ociuldr这个工具是用C写成的通过OCI和数据库交互方便而且效率很高
通过ociuldr转储的数据可以很容易用sqlldr加载入数据库两者结合使用效果非凡
我简单测试了一下转储很简单
D:\OraDoc\OracleTools\ociuldr>ociuldr user=scott/tiger@eygle query=select * from emp field=# record=xa file=emptxt rows exported at ::
rows exported at ::
output file emptxt closed at rows
创建好测试表
D:\OraDoc\OracleTools\ociuldr>sqlplus scott/tiger@eygle SQL*Plus: Release Production on 星期二 月 ::
Copyright (c) Oracle All rights reserved
连接到:
Oraclei Enterprise Edition Release Production
With the Partitioning option
JServer Release Production
SQL> create table empt as select * from emp where =;
表已创建
编写简单的控制文件通过sqlldr轻松加载入数据库
D:\OraDoc\OracleTools\ociuldr>cat actlLOAD DATA
INFILE emptxt
INTO TABLE empt
APPEND
FIELDS TERMINATED BY # TRAILING NULLCOLS
(
EMPNO
ENAME CHAR
JOB CHAR
MGR
HIREDATE DATE
SAL
COMM
DEPTNO
)
D:\OraDoc\OracleTools\ociuldr>sqlldr scott/tiger@eygle control=actl
SQL*Loader: Release Production on 星期二 月 ::
Copyright (c) Oracle All rights reserved
达到提交点 逻辑记录计数
D:\OraDoc\OracleTools\ociuldr>sqlplus scott/tiger@eygle
SQL*Plus: Release Production on 星期二 月 ::
Copyright (c) Oracle All rights reserved
连接到:
Oraclei Enterprise Edition Release Production
With the Partitioning option
JServer Release Production
SQL> set linesize
SQL> select * from empt;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
SMITH CLERK 月
ALLEN SALESMAN 月
WARD SALESMAN 月
JONES MANAGER 月
MARTIN SALESMAN 月
BLAKE MANAGER 月
CLARK MANAGER 月
SCOTT ANALYST 月
KING PRESIDENT 月
TURNER SALESMAN 月
ADAMS CLERK 月
JAMES CLERK 月
FORD ANALYST 月
MILLER CLERK 月
已选择行
SQL>
dcba说将在下一版增加自动控制文件生成的功能那时候这个工具将会更加方便了
The End