前回の記事でOracleのインポート/エクスポートをエクセルにて行いました。
エクセルを利用するとデータの加工や、各テーブルのデータをまとめて保存しておけるのが便利ですが、大量のデータとなると、「テキストファイル&SQLローダー」の組み合わせで処理した方が便利です。
そこで今回の記事では、SQLローダー(sqlldr)を利用した方法をご紹介します。
データのエクスポート
あるテーブルのデータをエクスポートするには、今回は「SQLDeveloper」を使います。
というのも、SQLDeveloperには非常に便利な機能があり、ワンクリックで、ファイルにエクスポートできるからです。
しかも、出力されたファイルには、sqlldrでのインポートに利用できる制御情報がデフォルトで埋め込まれていますから、面倒な記述なしで、sqlldr形式でのデータのエクスポート⇒インポートができるというわけです。
では、早速エクスポートしてみます。
SQLDeveloperでDBに接続し、対象のテーブルを右クリックします。表示されたメニューで、「データのエクスポート」⇒「loader」を選択してください。
やることはこれだけです。
ファイルの保存場所を指定すれば、そこにエクスポートしたデータが「.ldr」の拡張子で保存されます。
なお、そのファイルには制御情報も含まれると言いました。
実際に吐かれるファイルは以下のようなものです。
LOAD DATA
INFILE *
TRUNCATE
INTO TABLE "SAMPLE1"
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS (
CUST_CODE ,
CUST_NAME ,
DATE_COL timestamp "YY-MM-DD" ,
TIME_COL timestamp "YY-MM-DD HH24:MI:SS" )
begindata
aa|aa1|13-05-21|13-05-21 10:35:26
bb|bb1|13-05-21|13-05-21 10:35:52
データのインポート
データをインポートするには「sqlldr」を使います。Sqlldr.exeのあるディレクトリにパスが通っていることを確認して、以下のコマンドを入力しましょう。
sqlldr username/password@sid control=上記で出力したファイル log='ログファイル名'
制御ファイルとinファイルが同じファイル内に記述されていますので、上記のコマンドでOKです。