开发环境
| 名称 | 版本 |
|---|---|
| 操作系统 | Windows 10 X64 |
| Oracle | win64_11gR2_database |
| PLSQL Developer | 11.0.4.1788(64 bit)01.179332 - Unlimited user license |
参考
问题描述
需要把一个 Excel 中数据导入数据库表,大概有 7000 多条,我读取 Excel 数据并整合了一个 sql 脚本 02_tpsdata_init_data_TPS_OST_PS_BONUS_TEMP.sql。
这个脚本很大,我首先使用 SqlPlus 执行了,大概 10 多分钟,执行完毕,没有问题。
接着使用 PLSQL Developer 来执行这个脚本,然后就一直执行没有反应,接着卡死了。

原因分析
一开始我们怀疑是到最后才 commit 导致的,后来试着 100 条50 条 insert 数据 commit 一次,50 条 insert 数据 commit 一次,到 1 条 insert 数据 commit 一次的结果都是卡死。
于是猜测是 PLSQL Developer 的问题,查资料果然发现 PLSQL Developer 执行超过 400 条左右就会卡死。
解决办法
我的猜想是既然 SqlPlus 执行能成功,那么 PLSQL Developer 有没有类似的功能,可以直接执行一个脚本文件,不是执行脚本文件里面的 sql。
通过 文件-新建-命令窗口,输入 @\路径\文件名称 就可以达到 SqlPlus 类似的效果。


测试结果
对话框执行完毕,并测试数据无问题。