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

  • フィールドは次の要素を使用して設定されます。

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

    • 表の列型に基づく型

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

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

    • 囲みなし

    • 左右切捨て

  • 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 (不良ファイル)

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

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

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

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

    関連項目:

    • DATAパラメータ

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

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

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

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

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

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

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

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

関連項目:

  • SQL*Loaderがデータ・ファイルでバイト順序を処理する方法の詳細は、「バイト順序」を参照してください

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

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

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

ノート:

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

13.3.1 BAD

デフォルト: デフォルトは、(DATAパラメータを使用して)データ・ファイルが指定されているかどうかによって異なります。詳細は、「SQL*Loaderエクスプレス・モードで使用されるデフォルト値」を参照してください。

用途

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

構文および説明

BAD=[directory/][filename]

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

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

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

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

  • BADパラメータでファイル名が指定されているが、ディレクトリがない場合、ディレクトリはデフォルトでカレント・ディレクトリになります。

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

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

制限事項

注意:

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

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

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

> sqlldr hr TABLE=employees BAD=emp1

13.3.2 CHARACTERSET

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

用途

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

構文および説明

CHARACTERSET=character_set_name

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

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

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

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

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

用途

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

構文および説明

CSV=[WITH_EMBEDDED | WITHOUT_EMBEDDED]

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

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

    CSVファイルに埋込みのレコード終了記号が多く含まれると、パフォーマンスが低下する可能性があります。

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

制限事項

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

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

> sqlldr hr TABLE=employees CSV=WITH_EMBEDDED

13.3.4 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

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

用途

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

構文および説明

DATE_FORMAT=mask

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

制限事項

  • なし

データ・ファイルの日付が17-March-2012である場合、日付書式は次のように指定します。

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

13.3.6 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

デフォルト: デフォルト値は設定されていません。

用途

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

構文および説明

DIRECT=[TRUE|FALSE]

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

このパラメータは、SQL*Loaderエクスプレス・モードによって使用される外部表のデフォルトのロード方法に優先します。

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

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

制限事項

  • なし

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

> sqlldr hr TABLE=employees DIRECT=TRUE

13.3.8 DNFS_ENABLE

デフォルト: 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

デフォルト: 4

用途

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

構文および説明

構文は次のとおりです。

DNFS_READBUFFERS = n

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

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

関連項目:

13.3.10 ENCLOSED_BY

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

用途

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

構文および説明

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

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

制限事項

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

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

> sqlldr hr TABLE=employees ENCLOSED_BY='/'

13.3.11 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

デフォルト: 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

デフォルト: すべてのレコードがロードされます。

用途

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

デフォルト: デフォルトでは、NULLIFの確認は行われません。

用途

NULLIFパラメータでは、フィールドをNULL列としてロードするかどうかを決定するために使用する値を指定します。

構文および説明

NULLIF = "string"

または

NULLIF != "string"

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

制限事項

  • なし

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

> sqlldr hr TABLE=employees NULLIF="."

13.3.15 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

デフォルト: デフォルト値は設定されていません。

用途

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

デフォルト: このパラメータが指定されていない場合、内容は抑止されません。

用途

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

デフォルト: デフォルト値は設定されていません。

用途

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

構文および説明

TABLE=[schema-name.]table-name

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

TABLE='"hr.Employees"'

制限事項

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

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

> sqlldr hr TABLE=employees

13.3.19 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

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

用途

TIMESTAMP_FORMATパラメータでは、ロードで使用するタイムスタンプ書式を指定します。

構文および説明

TIMESTAMP_FORMAT="timestamp_format"

制限事項

  • なし

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

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

13.3.21 TRIM

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

用途

TRIMパラメータでは、ロード中に使用する切捨てタイプを指定します。

構文および説明

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

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

フィールドから文字を切り捨てない場合は、NOTRIMを使用します。この設定では、通常、最高のパフォーマンスを得ることができます。

フィールドから文字を切り捨てる場合は、LRTRIMLTRIMおよびRTRIMを使用します。LRTRIMを使用すると、先頭と後続の空白の両方が切り捨てられます。先頭の空白を切り捨てるには、LTRIMを使用します。後続の空白を切り捨てるには、RTRIMを使用します。

LDRTRIMは、次の場合を除いて、NOTRIMと同様です。

  • フィールドがOPTIONALLY_ENCLOSED BYで指定されたデリミタ付きフィールドで、オプションの囲みが特定のインスタンスで欠落している場合、空白は左から切り捨てられます。

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

制限事項

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

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

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

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

> sqlldr hr TABLE=employees TRIM=RTRIM

13.3.22 USERID

デフォルト: なし

用途

USERIDパラメータを使用して、Oracleユーザー名およびパスワードを指定します。

構文および説明

USERID = [username | / | SYS]

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

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

制限事項

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

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

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

> sqlldr USERID=hr TABLE=employees
  Password:

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

この項では、SQL*Loaderエクスプレス・モードの構文を図形式(線路図またはDDL構文図ともいいます)で示します。

ここで使用している構文の表記法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

express_init

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

express_options

express_options_cont