Oracle 的 SQL*Loader 真的是大批量数据导入的老牌工具,尤其是你手上有一堆文本文件要塞进数据库时,效率还挺不错的。搞多文件导入有几种路子,要么一个文件配一个控制文件,挨个跑,要么一个控制文件里写好条件语句,灵活点,还省维护功夫。更懒点的可以写个批脚本,跑一遍全搞定,适合文件多得一塌糊涂的情况。
控制文件是关键,它就像个书,告诉 SQL*Loader 怎么认数据:文件在哪、字段怎么分、哪些字段为空、数据用不用引号包着之类的。像FIELDS TERMINATED BY ','
、TRAILING NULLCOLS
这些设置,都是基础但超实用的。
想搞高效率的话,可以考虑开多线程并行加载,比如你有十几个文件,就同时跑几个sqlldr
进程,速度嗖嗖的。别忘了加错误日志和限制,不然一两个坏记录直接卡住就尴尬了。
我自己用得比较多的是批那种方式,写个for
循环,几十个文件轮着跑,稳。而且文件名灵活传进去,控制文件也能复用,省事。像这样:
for file in file1 file2 file3; do
sqlldr user/pwd@db control=my.ctl data=$file
done
如果你平时还用 Matlab、MySQL 或搞文本的,也可以看看下面这些相关资源,多思路其实是通的。