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 或搞文本的,也可以看看下面这些相关资源,多思路其实是通的。