我希望使用select查询将1000万条记录插入表中。这个过程需要很长时间..有其他选择吗?
答案 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有类似的东西。