🦁

【Silver DBA】SQL*Loaderの概要

2024/03/15に公開1

SQL*Loader

OSシステム上のデータをOracleデータベースの表にロードするツール。

・SQL*Loaderを起動するにはsqlldrを実行。
・ロード先の表名やデータファイル形式など、実行するロード処理の内容を制御ファイルに記述。
・制御ファイルの記述内容に従って、データファイルのデータがデータベースの表にロードされる。
・パラメータで DIRECT=trueを指定すると、ダイレクトパスロードが有効化される。
 ロードに最適化された方式で、大量のデータを高速にロードできる。

関連ファイル

[データファイル]

ロード対象のデータを含むファイル。テキストファイル、バイナリファイルなど。

[制御ファイル]

データをロードする表や、データファイルの形式などを記載。

[ログファイル]

SQL*Loaderの動作内容が出力される。

[廃棄ファイル]

ロード対象外のレコードが出力されるファイル。

[不良ファイル]

エラーによりロードできなかったレコードが出力されるファイル。

SQL*Loaderエクスプレスモード

SQL*Loaderエクスプレスモードでは、制御ファイルが不要。
コマンドラインでロード対象の表明を指定する。

sqlldr ユーザー名/パスワード TABLE=<ロード対象の表名>

エクスプレスモードの注意点

・ロード対象の表のデータは文字、数値、日時のみ可能。
・データファイルはCSVファイル、タブ区切りファイルなど、
 特定の区切り文字で区切られたテキスト形式のファイルのみ可能。
・APPENDモードでロードされる。(ロード対象の表に存在しているデータは削除されない)

エクスプレスモードのロード方法

まず外部表を用いたロード方法を実行し、
できなかった場合、ダイレクトパスロードでロードされる。

[外部表を用いたロード方法]

  1. SQL*LoaderデータファイルがあるOSディレクトリに対応するディレクトリオブジェクトを作成。
  2. SQL*Loaderデータファイルのデータを読み出せる外部票を作成。
  3. 外部表からロード先の表にデータをINSERT。
  4. 作成した外部表、ディレクトリオブジェクトを削除。
    ※ディレクトリオブジェクト・外部票の作成権限が必要。

エクスプレスモードのログファイル

・実行した処理に対応するSQL*Loader制御ファイルの内容
・外部表ロード実行時に自動的に内部で実行されるSQL文の情報
が記録される。

Discussion

おしんおしん

質問です。
エクスプレスモードはデータファイルのパスは指定してないと思うんですが、どこに配置すればいいのでしょうか。。