今天接到一个任务,要把excel里的电话号码导入Oracle数据库的某一个表。电话号码有7w个,我一开始用vba在excel里生成sql,如图:
之后,把全部sql黏贴到一个sql文件里,总共有7w条, 保存为"phone.sql"
然后把"phone.sql"拖到"plsqldev"工具里执行,结果"plsqldev"卡在那里没反应了。
原因是因为查询处理器一次性要编译7w条语句再执行所导致的,如果编译一条执行一条就不会了。
于是,就改为用sqlplus命令执行。在命令提示符里输入:
文件"phone.sql"里的语句就会顺序执行了,如图:
不过,这里要提醒的是,"phone.sql"最后面要加上语句"commit;"。当然,你不加的话,成功执行后也是需要在命令提示符里输入。还有,在"commit;"后再加上语句"exit;",会在成功执行后自动从数据库断开。如图:
网上也有提到用批处理命令执行,其实原理是一样的,就是在一个文本文件里加入上面提到的代码:
sqlplus username/password@dbName @"C:/phone.sql"
然后把文件保存为后缀为".bat"。最后双击它就可以执行导入动作了。
这时,"phone.sql"里的"exit;"语句的作用就变成让程序自动从命令提示符退出了。