ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE 大量导出导入工具的用法

ORACLE 大量导出导入工具的用法

原创 Linux操作系统 作者:sxrenjb 时间:2012-06-29 15:52:56 0 删除 编辑

1、导出数据

      查看SQLULDR2的命令 SQLULDR2 help = y

sqluldr2 user=tsms_dev/tsms_dev@tsms query="select * from tsms.T_DATA t" degree=2 rows=50000000 field="|"   file=D:\work\sqlload\DATA\out/T_DATA_20120608.txt   操作成功。

SQL*Loader的Parallel Data Loading选项允许使用多个进程将数据加载到相同的表中,利用系统上多余的资源,从而减少加载过程消耗的总时间。假设有足够的CPU和I/O资源,这 样做就可以极大地减少总的加载时间。

sqlldr userid=tsms_dev/tsms_dev@tsms control=D:\work\sqlload\ctl\T_DATA.ctl DIRECT=TRUE PARALLEL=TRUE
sqlldr userid=tsms_dev/tsms_dev@tsms control=D:\work\sqlload\ctl\T_DATA.ctl DIRECT=TRUE PARALLEL=TRUE     ---- CTL控制文件需要不同,并指定不同的数据文件

http://hi.baidu.com/oracle88/blog/item/32c5755ad50c248d810a186d.html

 

2、用DataCopy进行Oracle数据同步http://hi.baidu.com/oracle88/blog/item/8ee3e221a2fcd95e9822ed06.html

DataCopy(下载) 并不一定是指从源端取得数据, 然后INSERT到目标端, 插入只是一个默认操作而已, 其实在目标端还可以做UPDATE或DELETE操作. 对于INSERT可以使用Direct Path Load的方式, 速度可以比得上CTAS, 其他的操作方式, 则只能实现Array DML了. 在日常的DBA工作中, 还是会有一些数据同步的需求的, 这时DataCopy应当可以减轻你的工作量.

    在DataCopy中增加了两个命令行选项, 以支持不同的操作方式.

* sync    = sync mode (INSERT,UPDATE,DELETE,UPDINS,INSUPD,DELINS).
* unique  = primary key or unique key columns of target table.

    除INSERT操作外(SYNC选项的默认值), UPDATE/DELETE操作都需要指定目标端表的主键列, 以用在WHERE条件中. UPDATE操作会根据指定的主键列去更新非主键列的值(SYNC=UPDATE), 而DELETE操作则直接在目标端根据主键列删除记录(SYNC=DELETE).

datacopy user1=... user2=... table1=emp table2=emp_sync sync=delete unique=empno  degree=4
datacopy user1=... user2=... table1=emp table2=emp_sync sync=update unique=empno  degree=4

    根据前面的三种基本操作还可以延伸出来额外的三种操作, 在目标端用PL/SQL代码来实现, 第一种是UPDATE-INSERT方式, 在目标端先进行UPDATE, 如果更新0条记录, 则进行INSERT. 这种方式适合于以UPDATE为主的数据同步.

datacopy user1=... user2=... table1=emp table2=emp_sync sync=updins unique=empno

    第二种是INSERT-UPDATE方式, 在目标端先进行INSERT, 如果主键冲突, 则进行UPDATE. 这种方式适合于以INSERT为主的数据同步.

datacopy user1=... user2=... table1=emp table2=emp_sync sync=insupd unique=empno

    第三种是DELETE-INSERT方式, 在目标端先进行DELETE, 再进行INSERT操作. 这种方式的执行成本会比较高, 但逻辑简单.

datacopy user1=... user2=... table1=emp table2=emp_sync sync=delins unique=empno

    后面的三种方式, 如果要用PL/SQL来实现Array接口, 代码还是有一点复杂的, 如果要实现动态SQL的处理, 估计更复杂. 并且大量的循环, 用外部C写的程会更有效率.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11949963/viewspace-734162/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-05-16

  • 博文量
    26
  • 访问量
    28725