欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

小弟我有一个30w条的sql脚本,如何执行

更新时间: 2014-01-05 02:10:14 责任编辑: Author_N1

 

我有一个30W条的SQL脚本,怎么执行。
因为要大量数据测试,根据目前生成的数据,生成新的数据。根据要求生成了30W条的插入语句,由于数据量大,怎么插入比较快。比较合理,有经验的,大家一起讨论。
--参考方法--
方法一:
INSERT /*+Append*/ INTO  tab1
    SELECT * FROM tab2;

方法二:假如TAB1表中的没有数据的话,先把原表DROP掉,然后在CREATE AS,比如:
DROP TABLE TAB1;
CREATE TABLE TAB1 AS SELECT * FROM TAB2;
然后在此基础上建立索引。

更多方法,请参考:http://blog.csdn.net/tianlesoftware/article/details/4745144
--参考方法--
30W
就算用PL/SQL自带工具的话,10分钟内也完成了吧
--参考方法--
引用:
方法一:
INSERT /*+Append*/ INTO  tab1
    SELECT * FROM tab2;

方法二:假如TAB1表中的没有数据的话,先把原表DROP掉,然后在CREATE AS,比如:
DROP TABLE TAB1;
CREATE TABLE TAB1 AS SELECT * FROM TAB2;
然后在此基础上建立索引。

更多方法,请参考:http://blog.csdn.net/tianlesoftware/article/details/4745144


这招行得通!
--参考方法--
可以每隔几万行执行一个commit.要不redo表空间太大了
--参考方法--
引用:
不是这样的,假如一个商品A,A商品有供应商1,供应商2,供应商3,供应......,我想生成10000个商品,当然也要生成这些商品所对应的供应商。现在我已经生成了SQL语句,太大了,大约30W条SQL语句
例如
insert into product select 100(自动编号ID),‘proudctidB’,...... from product where productid='A';
insert into Supplier select 101(自动编号ID),‘SupplierB' ,...... from product where SupplierID='A';

.....................

insert into product select 100(自动编号ID),‘proudctidB’,...... from product where productid='N';
insert into Supplier select 101(自动编号ID),‘SupplierB' ,...... from product where SupplierID='N';
我要怎么运行是最佳的,写个程序,还是直接在PL/SQL中运行?

先把要插入表的索引去掉,还可以加append提示,但不建议,
做成sql文件直接在sqlplus命令行执行@xxx.sql就行了
--参考方法--
如果没有数据的话用二楼的第二种方法应该是最快的。如果需要根据主键关联的话可以考虑直接用UPDATE,我之前做一个一百万条数据的表的数据修改,直接等值连接的update也就一分多钟,中间没有什么计算的过程。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:10:14
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6459/
本文WWW.DOC100.NET DOC100.NET版权所有。