小弟要把表A的数据插入到表B,因为数据量大,所以想分批进行插入。
譬如A表有数据10000万条。
偶希望实现,通过10次来完成插入工作。
就是第一次查1000万条。无错的话,然后第二次插入后1000万条。
10次以后完成全部插入。
急等
譬如A表有数据10000万条。
偶希望实现,通过10次来完成插入工作。
就是第一次查1000万条。无错的话,然后第二次插入后1000万条。
10次以后完成全部插入。
急等
解决方案 »
- 关于pro*c访问oracle的问题
- 求助:一条有条件的插入SQL
- Oracl最快存储速度?
- oracle用BDE连接的问题
- oracle是不是在客户端长期不使用的情况下会自动断开与客户端的连接?
- 麻烦前辈们给我说说这句SQL语句里的玄机
- 启动osm:OracleOraHome81ManagementServer---在线等待
- 为什么不能运行Net8 Configuration Assiastant?
- 请问:有没有专门介绍ORACLE索引的书?
- sql语句问题,求大神解答
- 请问如何把一个表中的内容insert into到另外一个表中?
- 我寫了多個表的TRIGGER到一個SQL文件中去執行,發現ORACLE識別不了,都把代碼放在第一個TRIGGER中了!
首先找到最大最小的rowid
select min(rowid),max(rowid) from tbname ;
然后,通过结果计算差值,找到那9个点(rowid号)最后通过rowid来检索插入,效率应该最高了
insert into tbname_new select * from where rowid between xxx and yyy;
insert into B
(Select * from A where rowid in
(SELECT id FROM
(SELECT C.rowid id, rownum t FROM
(SELECT rowid FROM A) C
WHERE rownum <= 20000000
)
WHERE t > 10000000
)
);
//目的:80条一组 共4组SQL> select count(*) from tt; COUNT(*)
----------
320已用时间: 00: 00: 00.10
SQL> select max(rowid),min(rowid) from tt;MAX(ROWID) MIN(ROWID)
------------------ ------------------
AAAGJYAABAAAIWdAE1 AAAGJYAABAAAIWcAAA已用时间: 00: 00: 00.20第一个rowid:
SQL> select max(rid) from (
2 select rowid as rid from tt where rowid>='AAAGJYAABAAAIWcAAA' and rownum<=80);MAX(RID)
------------------
AAAGJYAABAAAIWdABF已用时间: 00: 00: 00.10第二个
SQL> select max(rid) from (
2 select rowid as rid from tt where rowid>'AAAGJYAABAAAIWdABF' and rownum<=80);MAX(RID)
------------------
AAAGJYAABAAAIWdACV已用时间: 00: 00: 00.10SQL> select max(rid) from (
2 select rowid as rid from tt where rowid>'AAAGJYAABAAAIWdACV' and rownum<=80);MAX(RID)
------------------
AAAGJYAABAAAIWdADl已用时间: 00: 00: 00.10
SQL> select max(rid) from (
2 select rowid as rid from tt where rowid>'AAAGJYAABAAAIWdADl' and rownum<=80);MAX(RID)
------------------
AAAGJYAABAAAIWdAE1已用时间: 00: 00: 00.10任意去两个连续的rowid点,看是否是80条记录。SQL> select count(*) from tt where rowid>= 'AAAGJYAABAAAIWdACV' and rowid <'AAAGJYAABAAAIWdADl'; COUNT(*)
----------
80已用时间: 00: 00: 00.10
SQL> 成功!