日本語PDF

13 SQL*Loaderエクスプレス

SQL*Loaderエクスプレス・モードでは、SQL*Loaderを使用して単純なデータ型を迅速かつ簡単にロードできます。

13.1 SQL*Loaderエクスプレス・モードとは

SQL*Loaderエクスプレス・モードでは、表の列がすべて文字、数値または日時データ型で、入力データ・ファイルにデリミタ付き文字データのみが含まれる場合、表名のみを指定することで迅速にロードを実行できます。

エクスプレス・モードでは、SQL*Loader制御ファイルは使用されません。かわりに、SQL*Loaderでは、ALL_TAB_COLUMNSビューにある表の列定義を使用して入力フィールドの順序とデータ型を判別します。他のほとんどの設定については、デフォルト値が想定されますが、これはコマンドライン・パラメータで上書きできます。

ノート:

SQL*Loaderエクスプレス・モードで使用できる有効なパラメータは、この章で説明しているパラメータのみです。他の任意のパラメータは、無視されるか、状況によってはエラーの原因となります。

13.2 SQL*Loaderエクスプレス・モードの使用方法

SQL*Loaderエクスプレス・モードをアクティブ化するには、ユーザー名と表名を指定するだけです。

次のように、SQL*Loaderによってパスワードの入力を要求されます。

> sqlldr username TABLE=employees
Password:
.
.
. 
 
SQL*Loader: Release 18.0.0.0.0 - Production on Mon Oct 16 127:19:39 2017
Version 18.1.0.0.0

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
 
Express Mode Load, Table: EMPLOYEES
.
.
.

TABLEパラメータのみを指定してSQL*Loaderエクスプレス・モードをアクティブ化すると、他の複数のパラメータにはデフォルト設定が使用されます。ほとんどのデフォルト値は、コマンドラインで追加パラメータを指定して上書きできます。

SQL*Loaderエクスプレス・モードでは、SQL*Loader制御ファイルを含むログ・ファイルが生成されます。ログ・ファイルには、外部表を作成し、SQL INSERT AS SELECT文を使用してロードを実行するためのSQLスクリプトも含まれます。制御ファイルもSQLスクリプトもSQL*Loaderエクスプレス・モードでは使用されません。これらは、通常のSQL*Loaderまたはスタンドアロンの外部表を使用して操作を実行する場合の開始ポイントとして使用できます(制御ファイルはSQL*Loaderで使用し、SQLスクリプトはスタンドアロンの外部表の操作で使用します)。

13.2.1 SQL*Loaderエクスプレス・モードで使用されるデフォルト値

SQL*Loaderエクスプレスで表をロードする方法、使用されるデフォルト値、デフォルト値を変更する条件について学習します。

デフォルトでは、特に指定しないかぎり、SQL*Loaderエクスプレス・モードを使用して実行されるロードでは次のように想定されます。

  • データ・ファイルを指定しない場合、カレント・ディレクトリでtable-name.datというファイルが検索されます。

  • デフォルトでは、SQL*Loaderエクスプレスは、外部表のロード方法を使用します。ただし、一部のエラーでは、SQL*Loaderエクスプレス・モードによって、デフォルトの外部表のロード方法からダイレクト・パス・ロードに自動的に切り替えられます。これが発生する例として、権限違反が原因でCREATE DIRECTORY SQLコマンドが失敗した場合があげられます。

  • SQL*Loaderエクスプレスのフィールドは、次のように設定されます。

    • 表の列名に基づく名前(フィールドの順序は表の列の順序に一致)

    • 表の列型に基づく型

    • 改行(レコード・デリミタとして)

    • カンマ(フィールド・デリミタとして)

    • 囲みなし

    • 左右切捨て

  • DEGREE_OF_PARALLELISMパラメータはAUTOに設定されます。

  • 日付およびタイムスタンプの書式ではNLS設定が使用されます。

  • NLSクライアント文字セットが使用されます。

  • すでに表にデータがある場合、新しいデータは表に追加されます。

  • データ・ファイルを指定していない場合、データ・ファイル、ログ・ファイルおよび不良ファイルには、次のデフォルト名が使用されます(%pは、Oracle Database子プロセスのプロセスIDに置き換えられます)。

    • table-name.dat (データ・ファイル)

    • table-name.log (SQL*Loaderログ・ファイル)

    • table-name_%p.log_xt (Oracle Databaseログ・ファイル。emp_17228.log_xtなど)

    • table-name_%p.bad (不良ファイル)

  • DATAパラメータを使用して、1つ以上のデータファイルを指定すると、ログ・ファイルと不良ファイルには次のデフォルト名が付けられます(%pは、サーバーの子プロセスのプロセスIDに置き換えられます)。

    • table-name.log (SQL*Loaderログ・ファイル)

    • table-name_%p.log_xt (Oracle Databaseログ・ファイル)

    • first-data-file_%p.bad (不良ファイル)

関連トピック

13.2.2 SQL*Loaderエクスプレス・モードによるバイト順序の処理方法

データ・ファイルで使用されている文字セットのタイプは、SQL*Loaderエクスプレスで使用されるバイト順序に影響します。

一般的に、SQL*Loaderエクスプレス・モードでは、SQL*Loader制御ファイルを使用して実行されるロードと同じ方法でバイト順序マークが処理されます。

まとめると、次のようになります。

  • Unicode文字セットを含むデータ・ファイルでは、SQL*Loaderエクスプレス・モードによってファイルの先頭にあるバイト順序マークが確認されます。

  • UTF16データ・ファイルでは、バイト順序マークが見つかると、バイト順序マークによってデータ・ファイルのバイト順序が設定されます。バイト順序マークが見つからない場合、SQL*Loaderが実行されているシステムのバイト順序がデータ・ファイルで使用されます。

  • UTF16データ・ファイルは、バイト順序(エンディアン)が、SQL*Loaderエクスプレスが実行されているシステムと同じバイト順序であるかどうかにかかわらず、ロードできます。

  • UTF8データ・ファイルでは、どのバイト順序マークが見つかってもスキップされます。

  • 複数のデータ・ファイルが関与し、それらが異なるバイト順序を使用している場合、ロードは中断されます。

13.3 SQL*Loaderエクスプレス・モードのパラメータ・リファレンス

この項では、SQL*Loaderエクスプレス・モードで使用できるパラメータについて説明します。

一部のパラメータの名前は通常のSQL*Loaderで使用されるパラメータと同じですが、動作が異なる場合があります。説明をよく読んで、想定される動作を確認してください。

ノート:

パラメータ値に引用符が含まれる場合、それらはパラメータ・ファイルで指定することをお薦めします。データ・ポンプ・エクスポート・コマンドライン・モードで使用可能なパラメータの「データ・ポンプ・コマンドラインでの引用符の使用」を参照してください。ここで説明する内容は、SQL*Loaderエクスプレス・モードにも関係します。

13.3.1 BAD

SQL*Loaderエクスプレス・モードのBADパラメータでは、不良ファイルの場所と名前を指定します。

デフォルト

デフォルトは、DATAパラメータを使用してデータ・ファイルが指定されているかどうかによって異なります。

用途

BADパラメータでは、不良ファイルの場所と名前を指定します。

構文

BAD=[directory/][filename]

使用上のノート

不良ファイルには、挿入時にエラーの原因になったレコードや、不適切に書式設定されたレコードが格納されます。BADパラメータを指定する場合は、ディレクトリとファイル名(またはそのどちらか)を指定する必要があります。BADパラメータを指定しない場合に、拒否レコードが存在すると、デフォルトのファイル名が使用されます。

directory変数には、不良ファイルの書込み先となるディレクトリを指定します。指定には、デバイスまたはネットワーク・ノードの名前を含めることができます。

filename変数には、プラットフォームで有効とみなされるファイル名を指定します。名前(および.bad以外のものを使用する場合は拡張子)のみを指定する必要があります。ファイル名に空白やその他の句読点文字が含まれている場合は、一重引用符で囲む必要があります。

directoryおよびfilenameの値は、次のように決定されます。

  • BADパラメータでファイル名を指定しているがディレクトリはない場合、ディレクトリはデフォルトで現在のディレクトリになります。

  • BADパラメータでディレクトリを指定しているがファイル名はない場合は、指定されたディレクトリが使用され、ファイル名と拡張子にはデフォルトが使用されます。

BADパラメータは、指定したDATAパラメータと一致するファイルのすべてに適用されます(DATAパラメータを指定していた場合)。DATAパラメータを指定していない場合、BADパラメータは1つのデータ・ファイル(table-name.dat)に適用されます。

注意:

  • ファイル名(デフォルトまたは指定した名前)がすでに存在する場合、そのファイル名は使用しているオペレーティング・システムに応じて、上書きされるか、新しいバージョンが生成されます。

  • 複数のデータ・ファイルがロードされる状況では、BADパラメータを指定しないか、または不良ファイルのディレクトリのみを指定することをお薦めします。

次の指定では、カレント・ディレクトリにemp1.badという不良ファイルを作成します。

> sqlldr hr TABLE=employees BAD=emp1

13.3.2 CHARACTERSET

SQL*Loaderエクスプレス・モードのCHARACTERSETパラメータでは、ロードに使用する文字セットを指定します。

デフォルト

環境変数NLS_LANGで指定されたNLSクライアント文字セット

用途

CHARACTERSETパラメータでは、ロードに使用するデフォルト以外の文字セットを指定します。

構文

CHARACTERSET=character_set_name

character_set_name変数で、文字セット名を指定します。通常、指定された名前は、Oracle Databaseがサポートしている文字セットの名前である必要があります。

使用上のノート

CHARACTERSETパラメータでは、SQL*Loaderの入力データ・ファイルの文字セットを指定します。CHARACTERSETパラメータが指定されていない場合、すべてのデータ・ファイルに対するデフォルトの文字セットは、環境変数NLS_LANGで定義されたセッション文字セットです。文字データ(SQL*Loaderデータ型のCHARVARCHARVARCHARC、数値型EXTERNALおよび日時データ型と期間データ型のフィールド)のみが、データ・ファイルの文字セットに影響されます。

UnicodeのUTF-16エンコーディングの場合は、名前はAL16UTF16でなくUTF16を使用します。AL16UTF16 (UTF-16エンコードされたデータに対してサポートされる文字セット名)は、ビッグ・エンディアンのバイト順序のUTF-16データにのみ使用されます。ただし、データ・ファイルを作成したシステムのバイト順序を使用してデータを設定することが許可されているため、データ・ファイル内のデータはビッグ・エンディアンまたはリトル・エンディアンのいずれかにできます。このため、異なる文字セット名(UTF16)が使用されます。また、文字セット名AL16UTF16もサポートされています。ただし、リトル・エンディアンのバイト順序のデータ・ファイルにAL16UTF16を指定すると、SQL*Loaderによって警告メッセージが発行され、データ・ファイルはリトル・エンディアンとして処理されます。

CHARACTERSETパラメータ値は、すべてのデータ・ファイルで同じであるとみなされます。

ノート:

UTF-16という用語は、一般的にUnicodeのUTF-16エンコーディングを意味します。UTF16(ハイフンなし)という用語は、文字セットの固有の名前で、UTF-16エンコーディングの使用時にCHARACTERSETパラメータに指定する必要のある用語です。UTF-8およびUTF8の場合も同様です。

制限事項

ありません。

次の例では、UTF-8の文字セットを指定します。

> sqlldr hr TABLE=employees CHARACTERSETNAME=utf8

13.3.3 CSV

SQL*Loaderエクスプレス・モードのCSVパラメータを使用すると、CSV形式のファイルに埋込みのレコード終了記号が付いたフィールドが含まれているかどうかを指定できます。

デフォルト

コマンドラインでCSVパラメータを指定しない場合、SQL*Loaderエクスプレスでは、ロードされるCSVファイルに埋込み文字や囲み文字を含まないデータが存在するものと想定されます。

コマンドラインでCSV=WITHOUT_EMBEDDEDを指定する場合、SQL*Loaderエクスプレスでは、ロードされるCSVファイルに埋込み文字を含まないデータと、オプションで「"」に囲まれたデータが存在するものと想定されます。

用途

CSVパラメータによって、ロードされるカンマ区切り値(CSV)形式のファイルにレコード終了記号の埋込みフィールドが含まれるかどうかを指定するオプションが提供されます。

構文

CSV=[WITH_EMBEDDED | WITHOUT_EMBEDDED]
  • WITH_EMBEDDED — このオプションは、レコードのフィールドにレコード終了記号が含まれる(埋め込まれている)場合があることを示します。レコード終了記号は改行です。デフォルトのデリミタは、TERMINTATED by ","およびOPTIONALLY_ENCLOSED_BY '"'です。埋込みのレコード終了記号は囲む必要があります。

  • WITHOUT_EMBEDDED—このオプションは、レコードのフィールドにレコード終了記号が含まれない(埋め込まれていない)ことを示します。レコード終了記号は改行です。デフォルトのデリミタは、TERMINATED BY ","およびOPTIONALLY_ENCLOSED_BY ' " 'です。

使用上のノート

CSVファイルに埋込みのレコード終了記号が多く含まれると、このパラメータによってパフォーマンスが悪影響を受ける可能性があります。

制限事項

  • 通常、ファイルはパラレルに処理できます(同時に複数の実行サーバーによって分割および処理されます)。ただし、埋込みのレコード終了記号を含むCSV形式のファイルの場合、そのファイルはただ1つの実行サーバーによって処理される必要があります。そのため、CSVパラメータをCSV=WITH_EMBEDDEDに設定すると、データ・ファイル内のパラレル処理が無効になります。

次の例では、埋込みのレコード終了記号を含むCSV形式のファイルとしてデータ・ファイルを処理します。

> sqlldr hr TABLE=employees CSV=WITH_EMBEDDED

13.3.4 DATA

SQL*Loaderエクスプレス・モードのDATAパラメータでは、ロードするデータが含まれているデータ・ファイルの名前を指定します。

デフォルト

表名と同じ名前ですが、拡張子は.datになります。

用途

DATAパラメータは、ロードするデータが含まれているデータ・ファイルの名前を指定します。

構文

DATA=data-file-name

ファイル拡張子を指定しない場合、デフォルトで.datになります。

使用上のノート

ファイルの指定にはワイルド・カードを含めることができますが、ファイル名とファイル拡張子にのみ可能で、デバイス名やディレクトリ名には不可能です。アスタリスク(*)は、複数の文字を表します。疑問符(?)は、任意の1文字を表します。たとえば:

DATA='emp*.dat'

DATA='m?emp.dat'

複数のデータ・ファイルの指定(それぞれにワイルド・カードを含めることが可能)をリストするには、カンマでファイル名を区切る必要があります。

ファイル名に任意の特殊文字(空白、*?など)が含まれる場合、名前全体を一重引用符で囲む必要があります。

次に、DATAパラメータの有効な3つの使用例を示します(ファイル名に特殊文字が含まれる場合のみ、一重引用符が必要です)。

DATA='file1','file2','file3','file4','file5','file6' 
DATA='file1','file2'
DATA='file3,'file4','file5'
DATA='file6' 
DATA='file1'
DATA='file2'
DATA='file3'
DATA='file4'
DATA='file5'
DATA='file6' 

注意:

複数のデータ・ファイルがロードされる状況でBADパラメータも指定する場合、ファイル名ではなく、不良ファイルのディレクトリのみを指定することをお薦めします。指定した名前を持つファイルがすでに存在する場合、使用しているオペレーティング・システムに応じて、そのファイルが上書きされるか、新しいバージョンが生成されます。

カレント・ディレクトリに emp1.datemp2.datm1emp.datおよびm2emp.datという名前のデータ・ファイルが含まれている状態で、次のコマンドを発行するとします。

> sqlldr hr TABLE=employees DATA='emp*','m1emp'

コマンドによって、ファイルemp1.datemp2.datおよびm1emp.datがロードされます。ファイルm2emp.datは、どのワイルドカード基準にも一致しないため、ロードされません。

13.3.5 DATE_FORMAT

SQL*Loaderエクスプレス・モードのDATE_FORMATパラメータは、すべての日付フィールドのデフォルト値をオーバーライドする日付書式を指定します。

デフォルト

DATE_FORMATパラメータが指定されていない場合、環境変数NLS_DATE_FORMATNLS_LANGUAGEまたはNLS_DATE_LANGUAGEの設定が使用されます(SQL*Loaderセッションに対して定義されている場合)。NLS_DATE_FORMATが定義されていない場合、日付は、NLS_TERRITORYの設定によって定義されるデフォルト書式であるとみなされます。

用途

DATE_FORMATパラメータでは、すべての日付フィールドのデフォルト値に優先する日付書式を指定します。

構文

DATE_FORMAT=mask

maskは、通常は二重引用符で囲まれる日付書式マスクです。

データ・ファイルの日付が2019年6月25日の場合、日付書式は次のように指定します。

> sqlldr hr TABLE=employees DATE_FORMAT="DD-Month-YYYY"

13.3.6 DEGREE_OF_PARALLELISM

SQL*Loaderエクスプレス・モードのDEGREE_OF_PARALLELISMパラメータは、ロードで使用する並列度を指定します。

デフォルト

AUTO

用途

DEGREE_OF_PARALLELISMパラメータでは、ロードで使用する並列度を指定します。

構文

DEGREE_OF_PARALLELISM=[degree-num|DEFAULT|AUTO|NONE]

オプション:

  • degree-numでは、並列度を指定します。1からnまでの整数値にする必要があります。
  • DEFAULTでは、データベースのデフォルトの並列度(デフォルトのパラメータ値AUTO以外)を指定します。
  • AUTOでは、ロードの並列度をOracle Databaseが自動的に設定するように指定します。DEGREE_OF_PARALLELISMパラメータを指定していない場合、これが並列度のデフォルト・オプションになります。
  • NONEでは、ロードの並列実行が不要なことを指定します。値NONEは、値1と同じです。

制限事項

  • DEGREE_OF_PARALLELISMパラメータは、従来型パスまたはダイレクト・パスのロード方法を強制的に実行する場合は無視されます(NONEオプションが使用されます)。どの値でDEGREE_OF_PARALLELISMパラメータを指定しても、常にこの内容を示すメッセージが表示されます。

  • ロードがデフォルトの外部表ロードで、SQL*Loaderエクスプレス・モードでかわりにダイレクト・パス・ロードを使用することになるエラーが発生した場合、並列度を指定したり、AUTOで外部表のデフォルトを受け入れていても、ジョブはパラレルに実行されません。この変更を示すアラート・メッセージが表示されます。

次の例では、並列度を使用せずにデータをロードします。

> sqlldr hr TABLE=employees DEGREE_OF_PARALLELISM=NONE

関連トピック

13.3.7 DIRECT

SQL*Loaderエクスプレス・モードのDIRECTパラメータは、従来型パスまたはダイレクト・パスのどちらのロード方法を使用するかを指定します。

デフォルト

デフォルトなし。

用途

DIRECTパラメータでは、従来型パスまたはダイレクト・パスのどちらのロード方法を使用するかを指定します。

構文

DIRECT=[TRUE|FALSE]

TRUE値はダイレクト・パス・ロードを指定します。FALSE値は従来型パス・ロードを指定します。

使用上のノート

このパラメータは、SQL*Loaderエクスプレス・モードの外部表のデフォルトのロード方法を上書きします。

一部のエラーでは、SQL*Loaderエクスプレス・モードによって、デフォルトの外部表のロード方法からダイレクト・パス・ロードに自動的に切り替えられます。これが発生する例として、権限違反が原因でCREATE DIRECTORY SQLコマンドが失敗した場合があげられます。

DIRECTパラメータを使用し、従来型パス・ロードまたはダイレクト・パス・ロードを指定する場合、次の標準のSQL*Loaderパラメータをエクスプレス・モードで使用できます。

  • BINDSIZE
  • COLUMNARRAYROWS (ダイレクト・パス・ロードのみ)
  • DATE_CACHE
  • ERRORS
  • MULTITHREADING (ダイレクト・パス・ロードのみ)
  • NO_INDEX_ERRORS (ダイレクト・パス・ロードのみ)
  • RESUMABLE
  • RESUMABLE_NAME
  • RESUMABLE_TIMEOUT
  • ROWS
  • SKIP
  • STREAMSIZE

次の例では、SQL*Loaderは、ロードで外部表のかわりにダイレクト・パス・ロード方法を使用します。

> sqlldr hr TABLE=employees DIRECT=TRUE

13.3.8 DNFS_ENABLE

SQL*Loaderエクスプレス・モードのDNFS_ENABLEパラメータを使用すると、SQL*Loader操作中の入力データ・ファイルに対するDirect NFSクライアントの使用を有効化および無効化できます。

デフォルト

TRUE

用途

DNFS_ENABLEパラメータでは、SQL*Loader操作中の入力データ・ファイルに対するDirect NFSクライアントの使用を有効化および無効化できます。

Direct NFSクライアントは、Oracleがファイル・サーバー上のファイルにアクセスする際のパフォーマンスを向上するために、ファイル・サーバーで実装できるAPIです。

構文

構文は次のとおりです。

DNFS_ENABLE=[TRUE|FALSE]

使用上のノート

SQL*Loaderでは、1GBを超えるデータ・ファイルを読み取る場合にデフォルトでDirect NFSクライアント・インタフェースが使用されます。よりサイズの小さいファイルでは、オペレーティング・システムのI/Oインタフェースが使用されます。すべての入力データ・ファイルでDirect NFSクライアントを使用するには、DNFS_ENABLE=TRUEを使用します。

すべてのデータ・ファイルでDirect NFSクライアントの使用を無効にするには、DNFS_ENABLE=FALSEを指定します。

DNFS_ENABLEパラメータをDNFS_READBUFFERSパラメータと組み合せて使用すると、Direct NFSクライアントによって使用される読取りバッファの数を指定できます。

13.3.9 DNFS_READBUFFERS

SQL*Loaderエクスプレス・モードのDNFS_READBUFFERSパラメータを使用すると、Direct NFSクライアントで使用される読取りバッファの数を制御できます。

デフォルト

4

用途

DNFS_READBUFFERSパラメータでは、Direct NFSクライアントによって使用される読取りバッファの数を制御できます。Direct NFSクライアントは、Oracleがファイル・サーバー上のファイルにアクセスする際のパフォーマンスを向上するために、ファイル・サーバーで実装できるAPIです。

構文

構文は次のとおりです。

DNFS_READBUFFERS = n

使用上のノート

デフォルトより大きい値を使用すると、Direct NFSクライアント・ファイル・サーバーからの一貫性のないI/Oに対処できますが、大きな値を使用すると、メモリーの使用量が増加する可能性もあります。

DNFS_ENABLEパラメータを同時に指定せずにこのパラメータを使用するには、入力ファイルが1GBを超えている必要があります。

13.3.10 ENCLOSED_BY

SQL*Loaderエクスプレス・モードのENCLOSED_BYパラメータでは、フィールドの囲み文字列を指定します。

デフォルト

デフォルトは、囲み文字なしです。

用途

ENCLOSED_BYパラメータでは、フィールドの囲み文字列を指定します。

構文

ENCLOSED_BY=['string'|x'hex-string']

囲み文字は1つの文字列または16進文字列である必要があります。

使用上のノート

同じ文字列を使用して囲み文字の最初と最後の両方を示す必要があります。

次の例では、フィールド・データは「/」文字(フォワード・スラッシュ)で囲まれます。

> sqlldr hr TABLE=employees ENCLOSED_BY='/'

13.3.11 EXTERNAL_TABLE

SQL*Loaderエクスプレス・モードのEXTERNAL_TABLEパラメータは、外部表のオプションを使用してデータをロードするかどうかを決定します。

デフォルト

EXECUTE

用途

EXTERNAL_TABLEパラメータは、外部表オプションを使用してデータをロードするかどうかをSQL*Loaderに指定します。

構文

EXTERNAL_TABLE=[NOT_USED | GENERATE_ONLY | EXECUTE]

次の3つの値を指定できます。

  • NOT_USED—従来型パス・モードまたはダイレクト・パス・モードのいずれかを使用して、ロードを行います。

  • GENERATE_ONLY—SQL*Loaderログ・ファイル内の外部表を使用してロードを行うために必要なすべてのSQL文を書き込みます。これらのSQL文は、編集およびカスタマイズできます。実際のロードは、SQL*Loaderを使用せずに、SQL*Plusでこれらの文を実行して、後で行うことができます。

  • EXECUTE—SQL*Loaderエクスプレス・モードのデフォルト値。外部表を使用してロードを行うために必要なSQL文を実行します。ただし、SQL文からエラーが返されると、ロードは停止します。SQL文は、実行されたとおりログ・ファイルに書き込まれます。つまり、SQL文からエラーが返されると、ロードに必要な残りのSQL文はログ・ファイルには書き込まれません。

使用上のノート

外部表オプションで、データベース内のディレクトリ・オブジェクトを使用して、すべてのデータ・ファイルがどこに格納されるか、および出力ファイル(不良ファイルや廃棄ファイルなど)がどこで作成されるかを指定します。データ・ファイルを含むディレクトリ・オブジェクトには、READアクセスが、出力ファイルが作成されるディレクトリ・オブジェクトには、WRITEアクセスが必要です。データ・ファイルまたは出力ファイル格納用の既存のディレクトリ・オブジェクトがない場合は、SQL*LoaderでSQL文を生成して作成します。したがって、EXECUTEオプションを指定する場合は、CREATE ANY DIRECTORY権限が必要です。ロード処理の最後にディレクトリ・オブジェクトを削除する場合は、DROP ANY DIRECTORY権限も必要です。

ノート:

SQL*LoaderでEXTERNAL_TABLE=EXECUTE修飾子を指定すると、データのロードに使用可能な外部表が作成された後、INSERT文が実行され、データがロードされます。外部表のすべてのファイルがディレクトリ・オブジェクト内に存在すると識別される必要があります。SQL*Loaderは、ユーザーがアクセス権限を所有している既存のディレクトリ・オブジェクトを使用します。ただし、SQL*Loaderにより一致するディレクトリ・オブジェクトが検出されない場合は、一時ディレクトリ・オブジェクトの作成が試行されます。新しいディレクトリ・オブジェクトを作成する権限を所有していない場合、この操作は正常に実行されません。

この問題を解決するには、EXTERNAL_TABLE=GENERATE_ONLYを使用して、SQL*Loaderで実行が試行されるSQL文を作成します。これらのSQL文を抽出し、参照するディレクトリ・オブジェクトを、アクセス権限を所有しているディレクトリ・オブジェクトに変更します。その後、これらのSQL文を実行します。

sqlldr hr TABLE=employees EXTERNAL_TABLE=NOT_USED

13.3.12 FIELD_NAMES

SQL*Loaderエクスプレス・モードのFIELD_NAMESパラメータでは、データベース表の列の順序に従っているフィールドを上書きします。

デフォルト

NONE

用途

FIELD_NAMESパラメータを使用して、データベース表の列の順序に従っているフィールドを上書きします。(デフォルトで、SQL*Loaderでは、ALL_TAB_COLUMNSビューにある表の列定義を使用して入力フィールドの順序とデータ型を判別します。)

このパラメータが役に立つ場合の例は、入力ファイルのデータが表の列と同じ順序になっていない場合です。このような場合、データ・ファイルに(表の列ヘッダー行のように)フィールド名のレコードを含め、FIELD_NAMESパラメータを使用して、最初のレコードのフィールド名を処理してフィールドの順序を決定するようにSQL*Loaderに指示できます。

構文

FIELD_NAMES=[ALL | ALL_IGNORE | FIRST | FIRST_IGNORE | NONE]

このパラメータの有効なオプションは次のとおりです。

  • ALL—すべてのデータ・ファイルでフィールド名レコードが処理されます。

  • ALL_IGNORE—すべてのデータ・ファイルで最初の(フィールド名)レコードを無視し、通常どおりデータ・レコードを処理します。

  • FIRST—最初のデータ・ファイルで最初の(フィールド名)レコードを処理します。他のすべてのデータ・ファイルでは、フィールド名レコードがないため、データ・ファイルは通常どおり処理されます。

  • FIRST_IGNORE—最初のデータ・ファイルで最初の(フィールド名)レコードを無視し、フィールド順序として表の列順序を使用します。

  • NONE—どのデータ・ファイルにもフィールド名レコードが存在しないため、データ・ファイルは通常どおり処理されます。これはデフォルトです。

使用上のノート

  • フィールド名に大文字と小文字が混在する場合、または空白などの特殊文字が含まれる場合、OPTIONALLY_ENCLOSED_BYパラメータまたはENCLOSED_BYパラメータを使用して、大/小文字を保持することと、特殊文字をフィールド名の一部として含めることを指定します。

列ヘッダーを含むCSVファイルを表にロードする際に、入力ファイルの各行のフィールドが表の列と同じ順序である場合、次のようにします。

> sqlldr hr TABLE=employees CSV=WITHOUT_EMBEDDED FIELD_NAMES=FIRST_IGNORE

13.3.13 LOAD

SQL*Loaderエクスプレス・モードのLOADパラメータでは、ロードするレコードの数を指定します。

デフォルト

すべてのレコードがロードされます。

用途

LOADパラメータでは、ロードするレコード数を指定します。

構文

LOAD=n

使用上のノート

ロードに指定したすべてのパラメータが正しく設定されているかどうかをテストする場合、LOADパラメータを使用して、すべてのレコードをロードするかわりに、かぎられた数のレコードを指定します。実際のレコード件数が指定された最大数より少ない場合、エラーは発生しません。

次の例では、最大10個のレコードをロードするように指定します。

> sqlldr hr TABLE=employees LOAD=10

外部表の方法によるロード(エクスプレス・モードのデフォルトのロード方法)では、ロードに成功したレコードのみが合計に加算されます。そのため、ファイルに15個のレコードがあり、レコード2および4が不良の場合、レコード1、3、5、6、7、8、9、10、11および12が合計10個のレコードとして表にロードされます。

従来型パス・ロードとダイレクト・パス・ロードでは、成功と失敗の両方のロード試行が合計に加算されます。そのため、ファイルに15個のレコードがあり、レコード2および4が不良の場合、レコード1、3、5、6、7、8、9および10の8個のみが実際に表にロードされます。

13.3.14 NULLIF

SQL*Loaderエクスプレス・モードのNULLIFパラメータは、フィールドをNULL列としてロードするかどうかを決定するために使用する値を指定します。

デフォルト

デフォルトでは、NULLIFのチェックは実行されません。

構文

NULLIF = "string"

または

NULLIF != "string"

使用上のノート

SQL*Loaderは、レコードのフィールドの値に基づいて、指定された値を確認します。等号(=)または不等号(!=)の指定を使用して一致した場合、その行ではフィールドがNULLに設定されます。空白の切捨て後に長さが0になったフィールドも、すべてNULLに設定されます。

次の例では、ピリオドの値が含まれるフィールドが存在する場合、各行でそれらのフィールドをNULLに設定します。

> sqlldr hr TABLE=employees NULLIF="."

13.3.15 OPTIONALLY_ENCLOSED_BY

SQL*Loaderエクスプレス・モードのOPTIONALLY_ENCLOSED_BYでは、オプションのフィールドの囲み文字列を指定します。

デフォルト

デフォルトでは、オプションのフィールド囲み文字はありません。

用途

OPTIONALLY_ENCLOSED_BYパラメータでは、オプションのフィールド囲み文字列を指定します。

構文

OPTIONALLY_ENCLOSED_BY=['string'| x'hex-string']

囲み文字は1つの文字列または16進文字列です。

使用上のノート

囲みの開始と終了の両方を示すために同じ文字列を使用する必要があります。

次の例では、オプションの囲み文字として二重引用符(")を指定します。

> sqlldr hr TABLE=employees OPTIONALLY_ENCLOSED_BY='"'

次の例では、16進形式でオプションの囲み文字を指定します。

> sqlldr hr TABLE=employees OPTIONALLY_ENCLOSED_BY=x'22'

13.3.16 PARFILE

SQL*Loaderエクスプレス・モードのPARFILEパラメータは、頻繁に使用するコマンドライン・パラメータを格納したファイルの名前を指定します。

デフォルト

デフォルトはありません

構文

PARFILE=parameter_file_name

使用上のノート

パラメータ値に引用符が含まれているものがある場合は、パラメータ・ファイルの使用をお薦めします。

ノート:

通常は問題ありませんが、システムによっては、パラメータ指定の中で等号(=)の前後に空白を挿入できないものもあります。

制限事項

  • セキュリティ上の理由から、パラメータ・ファイルにUSERIDのパスワードを含めないことをお薦めします。コマンドラインでパラメータ・ファイルを指定すると、SQL*Loaderからパスワードの入力を求められます。たとえば:

    > sqlldr hr TABLE=employees PARFILE=daily_report.par
    Password: 

次のパラメータ・ファイルtest.parを作成したとします。

table=employees
data='mydata*.dat'
enclosed_by='"'

次のコマンドを実行すると、mydata*.datと一致するデータ・ファイル内の二重引用符で囲まれたすべてのフィールドがemployees表にロードされます。

> sqlldr hr PARFILE=test.par
Password:

13.3.17 SILENT

SQL*Loaderエクスプレス・モードのSILENTパラメータは、SQL*Loaderの操作中に画面に書き込まれるコンテンツを抑止します。

デフォルト

\\このパラメータが指定されていない場合、内容は抑止されません。

用途

SILENTパラメータは、SQL*Loaderの操作中に画面に書き込まれる内容の一部を抑止します。

構文

構文は次のとおりです。

SILENT={HEADER | FEEDBACK | ERRORS | DISCARDS | PARTITIONS | ALL}

適切な値を使用して、次の1つ以上の内容を抑止します(複数のオプションを指定する場合、カンマで区切る必要があります)。

  • HEADER—画面に通常表示されるSQL*Loaderのヘッダー・メッセージを非表示にします。ただし、ヘッダー・メッセージはログ・ファイルに出力されます。

  • FEEDBACK—ロードで画面に通常表示される「commit point reached」メッセージとステータス・メッセージを非表示にします。

  • ERRORS—レコードにOracleエラーが発生したためそのレコードが不良ファイルに書き込まれた場合、データ・エラー・メッセージがログ・ファイルに出力されないようにします。ただし、拒否レコード件数は出力されます。

  • DISCARDS—レコードが廃棄ファイルに書き込まれた場合に、そのことを示すメッセージがログ・ファイルに出力されないようにします。このオプションは、エクスプレス・モードでは無視されます。

  • PARTITIONS—パーティション表のダイレクト・ロード中、ログ・ファイルに対するパーティションごとの統計情報の書込みを使用禁止にします。このオプションは、強制ダイレクト・パス操作でのみ有効です。

  • ALL—すべての抑止オプションを実装します。

たとえば、画面に通常表示されるヘッダーとフィードバック・メッセージが表示されないようにするには、コマンドラインの引数で次のように指定します。

> sqlldr hr TABLE=employees SILENT=HEADER, FEEDBACK

13.3.18 TABLE

SQL*Loaderエクスプレス・モードのTABLEパラメータでは、SQL*Loaderエクスプレス・モードをアクティブ化します。

デフォルト

デフォルトはありません。

構文

TABLE=[schema-name.]table-name

使用上のノート

スキーマ名または表名に小文字、空白または他の特殊文字が含まれる場合、名前を二重引用符で囲み、その文字列全体を一重引用符で囲む必要があります。たとえば:

TABLE='"hr.Employees"'

制限事項

TABLEパラメータは、SQL*Loaderエクスプレス・モードでのみ有効です。

次の例では、エクスプレス・モードでemployees表をロードします。

> sqlldr hr TABLE=employees

13.3.19 TERMINATED_BY

SQL*Loaderエクスプレス・モードのTERMINATED_BYでは、デフォルトに優先するフィールド終端文字を指定します。

デフォルト

デフォルトでは、カンマがフィールド終端文字です。

用途

TERMINATED_BYパラメータでは、デフォルトに優先するフィールド終端文字を指定します。

構文

TERMINATED_BY=['string'| x'hex-string' | WHITESPACE]

フィールド終端文字は1つの文字列または16進文字列である必要があります。

使用上のノート

TERMINATED_BY=WHITESPACEを指定すると、最初に空白文字(スペース、タブ、空白、LF、改ページまたは改行)が現れるまでデータが読み込まれます。空白文字が現れると、隣接する空白文字が検出されなくなるまで現在の位置が進められます。この方法では、様々な数の空白によってフィールド値を区切ることができます。

TERMINATED_BY=WHITESPACEを指定する場合、NULLフィールドに空白だけを含めることはできません。空白がスキップされ、エラーが報告される可能性があるためです。このオプションでは、データにNULLフィールドが含まれる場合は別の文字列を使用してNULLフィールドを示すことを検討します。また、NULLIFパラメータを使用してNULLIF文字列を示します。たとえば、文字列"NoData"を使用してNULLフィールドを示し、データに文字列"NoData"を挿入してNULLフィールドを示すことができます。NULLIF="NoData"を指定して、SQL*Loaderに対し、文字列"NoData"を含むフィールドをNULLに設定するように指示します。

次の例では、フィールドが「|」文字で終了します。

> sqlldr hr TABLE=employees TERMINATED_BY="|"

13.3.20 TIMESTAMP_FORMAT

TIMESTAMP_FORMATパラメータは、ロードの際に使用する必要があるタイムスタンプの書式を指定します。

デフォルト

デフォルトは、環境変数NLS_TIMESTAMP_FORMATの値から取得されます。NLS_TIMESTAMP_FORMATが設定されていない場合、タイムスタンプでは、6桁の小数点精度を持つ環境変数NLS_TERRITORYで定義されたデフォルト書式を使用します。

構文

TIMESTAMP_FORMAT="timestamp_format"

次の例では、タイムスタンプ書式を指定します。

> sqlldr hr TABLE=employees TIMESTAMP_FORMAT="MON-DD-YYYY HH:MI:SSXFF AM"

13.3.21 TRIM

SQL*Loaderエクスプレス・モードのTRIMパラメータでは、ロード中に使用するフィールド切捨てのタイプを指定します。

デフォルト

従来型パス・ロードとダイレクト・パス・ロードのデフォルトはLDRTRIMです。外部表ロードのデフォルトはLRTRIMです。

用途

TRIMパラメータは、ロード中に使用するフィールド切捨てのタイプを指定します。TRIMは、テキスト・フィールドの先頭から空白を切り捨てるか、末尾から切り捨てるか、その両方から切り捨てるかを指定するために使用します。空白には、空白文字およびその他の印字されない文字(タブ、行送り、改行など)が含まれます。

構文

TRIM=[LRTRIM | NOTRIM | LTRIM | RTRIM |LDRTRIM]

オプション:

  • LRTRIMでは、先頭と末尾のどちらの空白も切り捨てることを指定します。
  • NOTRIMは、フィールドから文字を切り捨てないように指定します。この設定では、通常、最高のパフォーマンスを得ることができます。
  • LTRIMでは、先頭の空白の切捨てを指定します。
  • RTRIMでは、末尾の空白の切捨てを指定します。
  • LDRTRIMNOTRIMと同じです。ただし、フィールドがOPTIONALLY_ENCLOSED_BYで指定したデリミタ付きのフィールドで、オプションの囲みデリミタが特定のインスタンスで欠落している場合を除きます。その場合は、空白が左側から切り捨てられます。

使用上のノート

すべてが空白のフィールドに切捨てを指定すると、そのフィールドはNULLに設定されます。

制限事項

  • 強制従来型パス・ロードおよび強制ダイレクト・パス・ロードでは、LDRTRIMのみがサポートされます。どの値でTRIMパラメータを指定しても、常にこの内容を示すメッセージが表示されます。

  • ロードがデフォルトの外部表ロードで、SQL*Loaderエクスプレス・モードでかわりにダイレクト・パス・ロードを使用することになるエラーが発生した場合、別の方法を指定したり、LRTRIMで外部表のデフォルトを受け入れていても、LDRTRMが切捨て方法として使用されます。この変更を示すアラート・メッセージが表示されます。

    NOTRIMを使用する場合、PRESERVE BLANKS句を含む制御ファイルを使用します。

次の例では、右側のすべての空白(後続の空白)を切り捨ててフィールドを読み取ります。

> sqlldr hr TABLE=employees TRIM=RTRIM

13.3.22 USERID

SQL*Loaderエクスプレス・モードのUSERIDを使用すると、Oracleユーザー名とパスワードを指定できるようになり、その入力要求が表示されなくなります。

デフォルト

ありません。

用途

USERIDパラメータを使用すると、Oracleユーザー名とパスワードを指定できます。

構文

USERID = [username | / | SYS]

使用上のノート

USERIDパラメータを指定しない場合、その入力を求められます。スラッシュのみを入力すると、デフォルトとしてオペレーティング・システムのログイン名がUSERIDに適用されます。

ユーザーSYSとして接続する場合は、接続文字列にAS SYSDBAも指定する必要があります。

制限事項

  • 文字列AS SYSDBAには空白が含まれるため、一部のオペレーティング・システムでは、接続文字列全体をなんらかの方法でリテラルとしてマーク(一重引用符で囲むなど)する必要があります。また、一部のオペレーティング・システムでは、バックスラッシュなどのエスケープ文字をコマンドラインの引用符の前に使用する必要があります。

    システムの特殊文字および予約文字の詳細は、対象オペレーティング・システムのマニュアルを参照してください。

次の例では、ユーザーhrのジョブを開始します。

> sqlldr USERID=hr TABLE=employees
  Password:

13.4 SQL*Loaderエクスプレス・モードの構文図

SQL*Loaderエクスプレス・モードのオプションについて理解するために、ここに示した図形式の構文ガイド(線路図またはDDL構文図と呼ぶこともあります)を参照してください。

図形式の構文表記法の理解

使用される構文の表記法については、次を参照してください。

構文図の読み方

express_init

次の構文図は、前の構文図のexpress_optionsに含まれるパラメータを示します。次の構文図に示されているSQL*Loaderエクスプレス・モードのパラメータは、すべてオプションで、SQL*Loaderコマンドラインに任意の順序で指定できます。そのため、これらは単純なアルファベット順で示します。