小弟要做一个数据迁移工作:实现思路如下:
想通过SQL脚本直接做,首先查询出要迁移的数据,然后再连接另外一个数据库,将数据插入到该数据库中。
现在主要的问题是:我不知道如何将数据直接从这个数据库插入到另外一个数据库里面,求代码。
想通过SQL脚本直接做,首先查询出要迁移的数据,然后再连接另外一个数据库,将数据插入到该数据库中。
现在主要的问题是:我不知道如何将数据直接从这个数据库插入到另外一个数据库里面,求代码。
解决方案 »
- ORA-12545: Connect failed because target host or object does not exist
- 求个SQL语句,大侠帮忙
- 求助:查询同一个表某个字段的多条记录
- oracle 如何设置一个链接超时时间
- 求救:存储过程循环查表数据插入表值都累加在最后了
- 分区表如何根据ID尾数分区
- 如何把Access中的一个表连同数据导到Oracle中去?
- SQl迁移到Oracle中碰到问题了!请各位指教!
- 一台服务器装两个数据库性能如何?
- 急问!alter index index_name rebuild真能释放索引表空间吗?
- oraclemtsrecoveryservice注册表imagepath键值是多少
- plsql有约束条件提示,如何查这个约束条件在哪个table上?
前者是从源数据库导出几乎所有Object的命令;(生成dmp文件)
后者是把dmp文件里的内容,导入到目标数据库的命令。
优点:简单灵活,适合多次数据同步
缺点:一次同步数据量不大,效率一般
=====================
原数据库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;
可以使用Oracle的逻辑备份与数据导出导入功能。(即EXPDP和IMPDP工具)
ETL有没实际的例子,我可以参考一下?
select * from orcdb.tb
实际中,还是要考虑一下,一次性/非一次性、数据量大/小、网络环境 稳定/不稳定 等等
自动化是好的,但要实现自动化,还需要考虑很多细节,加入更多的日志输出,以便跟踪修正。
((步骤1,2,都在B数据库操作)
1.在B数据库中建立DBLINK
create database link db
connect to A库用户名 identified by A库用户密码
using 数据库名2.把A库的数据插入B库
insert into B表
select * from A表@db