日期:2014-05-16  浏览次数:20707 次

有能力者请进,水贴请让路,求代码
小弟要做一个数据迁移工作:实现思路如下:
想通过SQL脚本直接做,首先查询出要迁移的数据,然后再连接另外一个数据库,将数据插入到该数据库中。
现在主要的问题是:我不知道如何将数据直接从这个数据库插入到另外一个数据库里面,求代码。

------解决方案--------------------
Oracle的exp/expdb和imp/impdb,你用过没有?
前者是从源数据库导出几乎所有Object的命令;(生成dmp文件)
后者是把dmp文件里的内容,导入到目标数据库的命令。
------解决方案--------------------
用SQL的ETL功能吧
------解决方案--------------------
=====================
优点:简单灵活,适合多次数据同步
缺点:一次同步数据量不大,效率一般
=====================
原数据库SRC_A,用户USERA 密码PWDA
目标数据库DIS_B,用户USERB 密码PWDB 

在DIS_B 的USERB上创建到 dblink B.TO.A
create database link B.TO.A
connect to USERA identified by PWDA
using 'SRC_A';

在SRC_A 的USERB上执行下面语句,会生成一个脚本,保存下来,拿到DIS_B 的USERB上执行。
DIS_B上没有表结构时用
select 'create table '||table_name||' as select * from '||table_name||'@B.TO.A
;'
from user_tables;
如果DIS_B上有表结构,用下面的。

select sq 
from (select 'insert into '||table_name||' select * from '||table_name||'@B.TO.A
;' sq ,rownum*2-1 rid
from user_tables
union all
select 'commit;' sq ,rownum*2 rid
from user_tables )
order by rid;

------解决方案--------------------
为什么要用SQL脚本直接做呢?(请说明理由)
可以使用Oracle的逻辑备份与数据导出导入功能。(即EXPDP和IMPDP工具)
------解决方案--------------------
不知道你是从什么数据库写入什么数据库,把你需求详细说明下,大家会比较好给处理方法
------解决方案--------------------
探讨

我主要是迁移某些表中的部分数据,所以像exp/imp就用不到了。。
ETL有没实际的例子,我可以参考一下?