请教下,我有两个数据库中各有一张结构完全相同的表,他们之间通过dblink可以互相访问数据。
现在我想从dblink1数据的的a表中将所有数据全部加入导dblink2的对应表中,a表中大约有2千万数据。
通过insert a select * from a@dblink1;commit来实现,现在的问题是:
内存不一定够,再有如果最后一次性提交的话,系统符合太大,而且速度奇慢,有没有办法能够实现每1W或是每100W数据commit一次??
还请达人不赐教。。
现在我想从dblink1数据的的a表中将所有数据全部加入导dblink2的对应表中,a表中大约有2千万数据。
通过insert a select * from a@dblink1;commit来实现,现在的问题是:
内存不一定够,再有如果最后一次性提交的话,系统符合太大,而且速度奇慢,有没有办法能够实现每1W或是每100W数据commit一次??
还请达人不赐教。。
解决方案 »
- select语句中select部分提示“未明确定义列”,无解
- oracle 计算增长率的问题
- 表之间的copy问题,十万火急
- m_pConnection->Execute((_bstr_t)sql,&vtMissing,adCmdText);报运行错误,如何解决
- select 的数据多了一倍
- 请教如何用load data方法同时把相同的数据倒入2个表!
- Oracle数据库中Number类型字段的问题?(在线等)
- 很简单的求救!?oracle designer
- 我安装完oracle9i后,不能进入sql plus????
- 求大神
- odac连接oracle延迟
- oracle 没有可用的错误信息:E_UNEXPECTED(0x8000FFFF)
insert /*+append*/ into a select * from a@dblink1;
commit;
还可以再在后边加上nologging
insert /*+append*/ into a nologging select * from a@dblink1;
commit;
//PrepareStatement stmt;
if(count = 10000){
stmt.prepareStatement(sql);
conn.setAutoCommit(false);
stmt.clearBatch();
//循环为sql设完值后
for(... ...){
stmt.setString(index,value);
... ...
}
stmt.addBatch();
}
stmt.executeBatch();
conn.commit();
--alter index idxname unusable --禁用a的索引,完毕重建索引
insert /*+append*/ into a select * from a@dblink1
--commit--或者写个循环批量提交