sql - 如何在 Oracle SQL Developer 中执行超过 100 万次插入查询?

标签 sql oracle oracle-sqldeveloper sql-scripts

我有超过 100 万个插入查询要在 Oracle SQL Developer 中执行,这需要很多时间。有什么办法可以优化这个。

最佳答案

SQL Developer 是运行 1,000,000 行逐行插入的错误工具。

SQL*Plus 也是如此。

如果您无法编写程序来使用循环或游标或某些 pl/sql 批量收集进行插入,则 do what @marmite-bomber suggests - 将您的数据写入一个平面分隔的文本文件,并设置一个 SQL*Loader 方案。

Now, you CAN use SQL Developer to do this.

enter image description here

指向您的分隔文本文件。

映射所有内容,然后使用此 IMPORT 方法。
enter image description here

完成后,您将拥有一组需要执行的 bash 或 cmd 脚本。但首先,您的机器上需要有一个 Oracle 客户端 - 这就是 sqlldr 程序所在的位置。

它比运行 1,000,000 个单独的插入要快几个数量级。你的 DBA 不会讨厌你。

使用 SQLDev 向导,您可以在几分钟内启动并运行。

证据:
我测试了一个简单的场景 - 我的发现是( details here ):
每秒为 SQL*Loader 插入 10,753 条记录
SQL Developer 每秒插入 342 条记录

SQL*Loader 的速度提高了 3,144%。

关于sql - 如何在 Oracle SQL Developer 中执行超过 100 万次插入查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52834051/

相关文章:

entity - 如何在oracle data modeler/sql developer中将ERD图导出为图像

MySQL 意外返回 "WHERE integer_column = ' string_value' 的结果

sql - 微软 Access VBA : Added columns to table but now SQL "INSERT INTO" won't work anymore

java - 使用 Thin Driver 设置扫描关闭

oracle - Oracle: 'execute immediate'是什么意思?

plsql - 如何在oracle sql developer中运行pl/sql程序

mysql - 如何在删除语句中使用 Sum 和 Inner Join

sql - 修改通过交叉应用识别的 XML 值

windows - NHibernate 和 Oracle 通过 Windows 身份验证连接

java - 复合键,比较