7.13 SQL*Loaderの事例

SQL*Loaderの機能の使用方法を学習できるように、Oracleでは実行可能な様々な事例を提供しています。

7.13.1 Oracle SQL*Loaderの事例へのアクセス方法と使用方法

Oracleでは、SQL*Loaderの機能の実例を示す11件の事例を提供しています

事例は、ユーザーscottが、デモンストレーション用のOracle Databaseのemp表およびdept表を所有している場合を想定して作成してあります。(一部の事例には、その他の列も追加されています)。事例には、1から11までの番号が付けられていて、最も単純なシナリオから始まりますが、先に進むにつれて複雑になります。

ノート:

事例に使用するファイルは、$ORACLE_HOME/rdbms/demoディレクトリにあります。これらのファイルは、Oracle Database Examples (以前のCompanion)メディアをインストールするとインストールされます。

次に、事例の概要を示します。

  • 事例1: 可変長データのロード: ストリーム形式のレコードをロードします。ここで扱うレコードのフィールドは、カンマで区切るか、または引用符で囲みます。データは制御ファイルの終わりに入っています。

  • 事例2: 固定形式フィールドのロード: 別のデータ・ファイルからデータをロードします。

  • 事例3: 自由区分形式ファイルのロード: フィールドがデリミタ付きで順序番号が付いている、ストリーム形式のレコードのデータをロードします。データは制御ファイルの終わりに入っています。

  • 事例4: 結合された物理レコードのロード: 複数の物理レコードを結合して、データベースの1行に対応する論理レコードを構成します。

  • 事例5: 複数表へのデータのロード: 1回の実行で、データを複数の表にロードします。

  • 事例6: ダイレクト・パス・ロード方式を使用したデータのロード: ダイレクト・パス・ロード方法を使用してデータをロードします。

  • 事例7: 書式設定されたレポートからのデータの抽出: 書式設定されたレポートからデータを抽出します。

  • 事例8: パーティション化された表のロード: パーティション表をロードします。

  • 事例9: LOBFILEのロード(CLOB): resumeというCLOB列をemp表に追加し、FILLERフィールド(res_file)を使用して、複数のLOBFILEをemp表にロードします。

  • 事例10: REFフィールドおよびVARRAYのロード: OIDを主キーとして利用するカスタマ表をロードして、注文した商品をVARRAYに格納します。カスタマ表およびVARRAYの注文商品を参照する注文表をロードします。

  • 事例11: Unicode文字セットのデータのロード: Unicode文字セットのUTF16データを、リトル・エンディアンのバイト順序でロードします。この事例は、文字長セマンティクスを使用します。

7.13.2 事例用ファイル

SQL*Loaderの各事例用ファイルには、その事例の使用に必要なファイルのセットが含まれています。

使用上のノート

通常、各事例は次の種類のファイルで構成されています。

  • 制御ファイル(ulcase5.ctlなど)

  • データ・ファイル(ulcase5.datなど)

  • セットアップ・ファイル(ulcase5.sqlなど)

これらのファイルは、Oracle Database Examples (以前のCompanion)メディアをインストールするとインストールされます。ファイルは$ORACLE_HOME/rdbms/demoディレクトリにインストールされます。

事例用の例データが制御ファイルに含まれている場合、その事例の.datファイルはありません。

事例2では特別な設定が不要なため、事例2の.sqlスクリプトはありません。事例7では、開始(セットアップ)スクリプトと終了(クリーンアップ)スクリプトの両方を実行する必要があります。

次の表に、各事例に関連のあるファイルを示します。

表7-1 事例用ファイルおよび関連ファイル

事例 .ctl .dat .sql

1

ulcase1.ctl

適用外

ulcase1.sql

2

ulcase2.ctl

ulcase2.dat

適用外

3

ulcase3.ctl

適用外

ulcase3.sql

4

ulcase4.ctl

ulcase4.dat

ulcase4.sql

5

ulcase5.ctl

ulcase5.dat

ulcase5.sql

6

ulcase6.ctl

ulcase6.dat

ulcase6.sql

7

ulcase7.ctl

ulcase7.dat

ulcase7s.sql

ulcase7e.sql

8

ulcase8.ctl

ulcase8.dat

ulcase8.sql

9

ulcase9.ctl

ulcase9.dat

ulcase9.sql

10

ulcase10.ctl

適用外

ulcase10.sql

11

ulcase11.ctl

ulcase11.dat

ulcase11.sql

7.13.3 事例の実行

SQL*Loaderの事例を実行するための一般的なステップは、その他の事例を実行する場合とほとんど同じです。

$ORACLE_HOME/rdbms/demoディレクトリに移動していることを確認してください。事例用ファイルは、このディレクトリに格納されています。

また、各事例を実行する前に、制御ファイルを確認する必要もあります。制御ファイルの先頭には、事例で実施される内容に関する情報と把握する必要があるその他の特別な情報が含まれています。たとえば、事例6では、SQL*LoaderのコマンドラインにDIRECT=TRUEを追加する必要があります。

  1. システム・プロンプトでsqlplusと入力し、[Enter]を押してSQL*Plusを起動します。ユーザー名のプロンプトで、scottと入力します。パスワードのプロンプトで、tigerと入力します。

    SQLプロンプトが表示されます。

  2. SQLプロンプトで、事例用のSQLスクリプトを実行します。 :

    たとえば、事例1のSQLスクリプトを実行するには、次のコマンドを入力します。

    SQL> @ulcase1
    

    このコマンドは、事例用の表を準備して移入すると、システム・プロンプトに戻ります。

  3. システム・プロンプトでSQL*Loaderを起動し、事例を実行します。

    たとえば、事例1を実行する場合は次のコマンドを入力します。

    sqlldr USERID=scott CONTROL=ulcase1.ctl LOG=ulcase1.log
    

    CONTROLパラメータとLOGパラメータを適切な制御ファイル名とログ・ファイル名に置き換え、[Enter]を押します。パスワードを入力するように要求されたら、tigerと入力して[Enter]を押します。

7.13.4 事例用ログ・ファイル

事例用のログ・ファイルは、$ORACLE_HOME/rdbms/demoディレクトリにあらかじめ用意されているわけではありません。

これは、各事例のログ・ファイルは、事例を実行したときに生成されるためです(ただし、LOGパラメータを使用していることが条件です)。ログ・ファイルを生成しない場合は、コマンドラインでLOGパラメータを指定しないようにします。

7.13.5 事例の結果確認

事例の実行結果を確認するには、SQL*Plusを起動して、事例でロードされた表から選択操作を実行します。

  1. システム・プロンプトでsqlplusと入力し、[Enter]を押してSQL*Plusを起動します。ユーザー名のプロンプトで、scottと入力します。パスワードのプロンプトで、tigerと入力します。

    SQLプロンプトが表示されます。

  2. SQLプロンプトでSELECT文を使用して、事例がロードされた表からすべての行を選択します。

    たとえば、表empをロードする場合は、次の文を入力します。

    SQL> SELECT * FROM emp;
    

    emp表の各行の内容が表示されます。