サブリーダーの吉田です。

SQL*Loaderは高速にファイルをOracleのDBに取り込めるので、プログラムを組んでファイルを取り込むよりも非常に高速です。2万件のCSVデータでも数秒程度でデータのインポートが完了してしまうほどです。

SQL*Loaderはコントロールファイルに設定値を書き込んでおくことにより設定が可能です。
主にインポート対象のテーブル名、カラム名や、INSERTするカラムに対して固定値や行数など様々な値を設定できます。そのコントロールファイルで

LOAD DATA CHARACTERSET <エンコード名>

と設定し実行することでエンコード名を設定することができます。(※CHARACTERSET以下は省略することもでき、省略された場合にはNLS_LANGに設定された文字コードになる模様

そこの<エンコード名>で設定できる値は
・JA16SJIS
・JA16SJISTILDE
・JA16SJISYEN
・AL16UTF16
・AL32UTF8
・UTF8
・JA16EUC
・JA16EUCTILDE
・JA16EUCYEN
とOracleの文字コードになりますので注意が必要です。UTF-8と書いたら失敗ばかりしていて少し悩みました。Oracleのページにきちんと書いてありました。SQL*Loader制御ファイル・リファレンス

Java等のプログラムから利用する場合には
1.最初に一時テーブルに取り込んでおき、それからプログラムを実行
2.プログラムからbatファイル、コントロールファイルをテンプレートから作成し、実行直前にコミット、SQL*Loader実行後、SQL*Loaderの実行結果の検証をしてプログラムを進める
などの一工夫が必要になります。