oracle批量插入数据使用sqlldr。
首先将要导入的excel文件另存为csv格式(默认逗号间隔,另存为csv,不只是改后缀名)
然后用sqlldr导入。
sqlldr的参数很多,简单的几个就可以了:
建一个控制文件control.txt:
load data
infile 'f:\test.csv'
into table test1
(id char terminated by ',',
name char terminated by ',',
height char terminated by ',',
birth char terminated by whitespace)
----这里根据需要,修改数据文件的名字和路径。括号里面的字段名和字段数也根据实际情况修改。由于保存的是csv,字段间以逗号隔开,因此控制文件里定义最后一个字段以whitespace来分隔,其它的用','
然后使用sql*loader:
sqlldr userid=USERNAME/PASSWORD@XXXX control=f:\control.txt log=f:\test.log bad=f:\testbad.csv
userid后跟用户名密码,@后的是网络服务名,需要在客户端的tnsnames.ora文件里定义。control后的值是刚刚建的控制文件的路径,日志将生成在log参数指定的位置上,如果有记录没有导入成功,这些记录会放置在bad后指定的文件里。
如果是文本文件(不一定是纯文本,execl也可以,另存为文本就可以,只要注意一下分隔符号就可以了),那么sqlloader导入,只要参数设置对了,这个应该是比较快的。
如果是从其他表插入,而且数据量很大,那么就写脚本分批insert,commit;
当然用其他工具也可以,比如用plsql developer的导入功能,或者复制。
关键看是什么类型的数据。
用SQLLoader进行上传数据,1万条数据耗时8秒。