在SQL中从select查询中插入1000万条记录的最佳方法

时间:2011-11-30 13:32:29

标签: sql database oracle

我希望使用select查询将1000万条记录插入表中。这个过程需要很长时间..有其他选择吗?

4 个答案:

答案 0 :(得分:2)

无处不在的Don Burleson有一个专门用于批量插入数据的页面,它包含oracle文档和其他有用资源的链接。

可在此处找到:http://www.dba-oracle.com/oracle_tips_data_load.htm

希望它有所帮助...

答案 1 :(得分:1)

有几条评论提到了批量加载器。如果你有权限,他们可以非常强大。

就纯SQL而言,您可能会发现您遇到了日志文件问题:如果事务被取消,则所有内容都需要回滚,日志文件包含处理该事务所需的所有内容。

要规避这一点,请在块中处理您的记录。可能一次10,000个,循环重复1000次。要选择的确切数字有点反复试验。您希望一次性尽可能多地执行操作,而不会对日志文件施加太大压力。

答案 2 :(得分:1)

我从DonBurlesons文章中遗漏的一件事是CTAS(创建表格作为选择)。如果在插入之前表格为空,则可能是一个选项。

答案 3 :(得分:0)

MySQL有一个“LOAD DATA INFILE”操作,用一个文本文件(本质上是.csv文件)替换一个表。我只有五十万行,效果很好。也许Oracle有类似的东西。