Oracle中如何插入大数据量记录?当记录超过1百万时,如果直接用
INSERT INTO tab1
SELECT * FROM tab2;
速度相当慢,甚至导致死机,以前好象看过Oracle大数据量插入时要用游标,每插入100条左右则commit,是不是只能这样?请给点代码。
INSERT INTO tab1
SELECT * FROM tab2;
速度相当慢,甚至导致死机,以前好象看过Oracle大数据量插入时要用游标,每插入100条左右则commit,是不是只能这样?请给点代码。
解决方案 »
- oracle存储过程
- 两个表有重复的字段名怎么把数据插入到另一张表里
- oracle 更新的存储过程怎么写
- substr 问题???
- Oracle 10G 的管理员密码丢了,如何找回来,非常急!
- 请问oracle怎么能用数字作列名
- 如何在sql输出结果前加标题?
- 请教几个SQL问题~急,在线等~~请高手指教
- 这100分是给ern(毕业生)的,其它人不要抢 。谢谢他回答我的问题 。
- 怎么快照复制一个数据库???????????????????????????????????????????????????????????????????????????????????????
- 请问如何更改已存在表的列名??
- 将sql server2000的表导入到oracle8.0中,除了字段和数据,为什么主键和索引等等都没了
CREATE TABLE TAB1 AS SELECT * FROM TAB2;然后在创建索引第二中方法:采用HINT
SELECT * FROM tab2;
SELECT * FROM tab2;
用row_id来计算,每100条commit一次。
sql>alter table table_name NOLOGGING;
然后采用JaneHello()提出的那种形式完成操作。
插入完数据后,再修改表写日志:
sql>alter table table_name LOGGING;这里的区别就在于如果插入数据的同时又写日志,尤其是大数据量的insert操作,需要耗费较长的时间。
alter table tab1 rename to tab11;
alter table tab2 rename to tab1;
(2)导出改名前的tab2
exp user/pwd@... file=... log=... tables=(tab1)
(3)把名字改回来
alter table tab1 rename to tab2;
alter table tab11 rename to tab1;
(4)导入数据
imp user/pwd@... file=... log=... fromuser=user touser=user tables=(tab1)
*_*
需要的话,可以用CSDN发送消息
1 INSERT /*+Append*/ INTO tab1
SELECT * FROM tab2; 这是直接插入不需处理回滚等一些事务....2 把原表delete 掉 然后create as 3 因为你是oracle 所以在进行数据处理时最好使用批动,建议使用动态批处理方式,只要你的内存够大