13 SQL*Loaderエクスプレス
SQL*Loaderエクスプレス・モードでは、SQL*Loaderを使用して単純なデータ型を迅速かつ簡単にロードできます。
- SQL*Loaderエクスプレス・モードとは
SQL*Loaderエクスプレス・モードでは、表の列がすべて文字、数値または日時データ型で、入力データ・ファイルにデリミタ付き文字データのみが含まれる場合、表名のみを指定することで迅速にロードを実行できます。 - SQL*Loaderエクスプレス・モードの使用方法
SQL*Loaderエクスプレス・モードをアクティブ化するには、ユーザー名と表名を指定するだけです。 - SQL*Loaderエクスプレス・モードのパラメータ・リファレンス
この項では、SQL*Loaderエクスプレス・モードで使用可能なパラメータについて説明します。 - SQL*Loaderエクスプレス・モードの構文図
SQL*Loaderエクスプレス・モードのオプションについて理解するために、ここに示した図形式の構文ガイド(線路図またはDDL構文図と呼ぶこともあります)を参照してください。
親トピック: SQL*Loader
13.1 SQL*Loaderエクスプレス・モードとは
SQL*Loaderエクスプレス・モードでは、表の列がすべて文字、数値または日時データ型で、入力データ・ファイルにデリミタ付き文字データのみが含まれる場合、表名のみを指定することで迅速にロードを実行できます。
エクスプレス・モードでは、SQL*Loader制御ファイルは使用されません。かわりに、SQL*Loaderでは、ALL_TAB_COLUMNS
ビューにある表の列定義を使用して入力フィールドの順序とデータ型を判別します。他のほとんどの設定については、デフォルト値が想定されますが、これはコマンドライン・パラメータで上書きできます。
ノート:
SQL*Loaderエクスプレス・モードで使用できる有効なパラメータは、この章で説明しているパラメータのみです。他の任意のパラメータは、無視されるか、状況によってはエラーの原因となります。
親トピック: 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スクリプトはスタンドアロンの外部表の操作で使用します)。
- SQL*Loaderエクスプレス・モードで使用されるデフォルト値
SQL*Loaderエクスプレスで表をロードする方法、使用されるデフォルト値、デフォルト値を変更する条件について説明します。 - SQL*Loaderエクスプレス・モードによるバイト順序の処理方法
データ・ファイルで使用されている文字セットのタイプは、SQL*Loaderエクスプレスで使用されるバイト順序に影響します。
関連項目:
-
制御ファイルの詳細は、「SQL*Loader制御ファイル・リファレンス」を参照してください
親トピック: SQL*Loaderエクスプレス
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
(不良ファイル)
-
関連トピック
親トピック: SQL*Loaderエクスプレス・モードの使用方法
13.2.2 SQL*Loaderエクスプレス・モードによるバイト順序の処理方法
データ・ファイルで使用されている文字セットのタイプは、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エクスプレス・モードにも関係します。
- BAD
SQL*Loaderエクスプレス・モードのBADパラメータでは、不良ファイルの場所と名前を指定します。 - CHARACTERSET
SQL*Loaderエクスプレス・モードのCHARACTERSET
パラメータでは、ロードに使用する文字セットを指定します。 - CSV
SQL*Loaderエクスプレス・モードのCSV
パラメータを使用すると、CSV形式のファイルに埋込みのレコード終了記号が付いたフィールドが含まれているかどうかを指定できます。 - DATA
SQL*Loaderエクスプレス・モードのDATA
パラメータでは、ロードするデータが含まれているデータ・ファイルの名前を指定します。 - DATE_FORMAT
SQL*Loaderエクスプレス・モードのDATE_FORMAT
パラメータは、すべての日付フィールドのデフォルト値をオーバーライドする日付書式を指定します。 - DEGREE_OF_PARALLELISM
SQL*Loaderエクスプレス・モードのDEGREE_OF_PARALLELISM
パラメータは、ロードで使用する並列度を指定します。 - DIRECT
SQL*Loaderエクスプレス・モードのDIRECT
パラメータは、従来型パスまたはダイレクト・パスのどちらのロード方法を使用するかを指定します。 - DNFS_ENABLE
SQL*Loaderエクスプレス・モードのDNFS_ENABLE
パラメータを使用すると、SQL*Loader操作中の入力データ・ファイルに対するDirect NFSクライアントの使用を有効化および無効化できます。 - DNFS_READBUFFERS
SQL*Loaderエクスプレス・モードのDNFS_READBUFFERS
パラメータを使用すると、Direct NFSクライアントで使用される読取りバッファの数を制御できます。 - ENCLOSED_BY
SQL*Loaderエクスプレス・モードのENCLOSED_BY
パラメータでは、フィールドの囲み文字列を指定します。 - EXTERNAL_TABLE
SQL*Loaderエクスプレス・モードのEXTERNAL_TABLE
パラメータは、外部表のオプションを使用してデータをロードするかどうかを決定します。 - FIELD_NAMES
SQL*Loaderエクスプレス・モードのFIELD_NAMES
パラメータでは、データベース表の列の順序に従っているフィールドを上書きします。 - LOAD
SQL*Loaderエクスプレス・モードのLOAD
パラメータでは、ロードするレコードの数を指定します。 - NULLIF
SQL*Loaderエクスプレス・モードのNULLIF
パラメータは、フィールドをNULL列としてロードするかどうかを決定するために使用する値を指定します。 - OPTIONALLY_ENCLOSED_BY
SQL*Loaderエクスプレス・モードのOPTIONALLY_ENCLOSED_BY
では、オプションのフィールドの囲み文字列を指定します。 - PARFILE
SQL*Loaderエクスプレス・モードのPARFILE
パラメータは、頻繁に使用するコマンドライン・パラメータを格納したファイルの名前を指定します。 - SILENT
SQL*Loaderエクスプレス・モードのSILENT
パラメータでは、SQL*Loaderの操作中に画面に書き込まれるコンテンツを抑止します。 - TABLE
SQL*Loaderエクスプレス・モードのTABLE
パラメータでは、SQL*Loaderエクスプレス・モードをアクティブ化します。 - TERMINATED_BY
SQL*Loaderエクスプレス・モードのTERMINATED_BY
では、デフォルトに優先するフィールド終端文字を指定します。 - TIMESTAMP_FORMAT
TIMESTAMP_FORMAT
パラメータでは、ロードの際に使用するタイムスタンプの書式を指定します。 - TRIM
SQL*Loaderエクスプレス・モードのTRIM
パラメータでは、ロード中に使用するフィールド切捨てのタイプを指定します。 - USERID
SQL*Loaderエクスプレス・モードのUSERID
を使用すると、Oracleユーザー名とパスワードを指定できるようになり、その入力要求が表示されなくなります。
親トピック: 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データ型のCHAR
、VARCHAR
、VARCHARC
、数値型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.dat
、emp2.dat
、m1emp.dat
およびm2emp.dat
という名前のデータ・ファイルが含まれている状態で、次のコマンドを発行するとします。
> sqlldr hr TABLE=employees DATA='emp*','m1emp'
コマンドによって、ファイルemp1.dat
、emp2.dat
およびm1emp.dat
がロードされます。ファイルm2emp.dat
は、どのワイルドカード基準にも一致しないため、ロードされません。
13.3.5 DATE_FORMAT
SQL*Loaderエクスプレス・モードのDATE_FORMAT
パラメータは、すべての日付フィールドのデフォルト値をオーバーライドする日付書式を指定します。
デフォルト
DATE_FORMAT
パラメータが指定されていない場合、環境変数NLS_DATE_FORMAT
、NLS_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
では、末尾の空白の切捨てを指定します。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
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コマンドラインに任意の順序で指定できます。そのため、これらは単純なアルファベット順で示します。
express_options
express_options_cont
親トピック: SQL*Loaderエクスプレス