13 SQL*Loaderエクスプレス
- SQL*Loaderエクスプレス・モードとは
- SQL*Loaderエクスプレス・モードの使用方法
- SQL*Loaderエクスプレス・モードのパラメータ・リファレンス
- SQL*Loaderエクスプレス・モードの構文図
親トピック: 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 12.2.0.1.0 - Production on Fri Sep 9 12:12:33 2016
Copyright (c) 1982, 2016, 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エクスプレス
13.2.1 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エクスプレス・モードにも関係します。
- BAD
- CHARACTERSET
- CSV
- DATA
- DATE_FORMAT
- DEGREE_OF_PARALLELISM
- DIRECT
- DNFS_ENABLE
- DNFS_READBUFFERS
- ENCLOSED_BY
- EXTERNAL_TABLE
- FIELD_NAMES
- LOAD
- NULLIF
- OPTIONALLY_ENCLOSED_BY
- PARFILE
- SILENT
- TABLE
- TERMINATED_BY
- TIMESTAMP_FORMAT
- TRIM
- USERID
親トピック: 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データ型のCHAR
、VARCHAR
、VARCHARC
、数値型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.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
デフォルト: DATE_FORMAT
パラメータが指定されていない場合、環境変数NLS_DATE_FORMAT
、NLS_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と同じです。
関連項目:
-
パラレル実行の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。
制限事項
-
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パラメータをエクスプレス・モードで使用できます。
-
COLUMNARRAYROWS (ダイレクト・パス・ロードのみ)
-
MULTITHREADING (ダイレクト・パス・ロードのみ)
-
NO_INDEX_ERRORS (ダイレクト・パス・ロードのみ)
制限事項
-
なし
例
次の例では、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クライアントによって使用される読取りバッファの数を指定できます。
関連項目:
-
NFSでDirect NFSクライアントのOracle Disk Manager Controlを有効化する方法の詳細は、使用しているプラットフォームの『Oracle Databaseインストレーション・ガイド』を参照してください。
13.3.9 DNFS_READBUFFERS
デフォルト: 4
用途
DNFS_READBUFFERS
パラメータでは、Direct NFSクライアントによって使用される読取りバッファの数を制御できます。Direct NFSクライアントは、Oracleがファイル・サーバー上のファイルにアクセスする際のパフォーマンスを向上するために、ファイル・サーバーで実装できるAPIです。
構文および説明
構文は次のとおりです。
DNFS_READBUFFERS = n
デフォルトより大きい値を使用すると、Direct NFSクライアント・ファイル・サーバーからの一貫性のないI/Oに対処できますが、メモリー使用量が増大する可能性があります。
DNFS_ENABLE
パラメータを同時に指定せずにこのパラメータを使用するには、入力ファイルが1GBを超えている必要があります。
関連項目:
-
NFSでDirect NFSクライアントのOracle Disk Manager Controlを有効化する方法の詳細は、使用しているプラットフォームの『Oracle Databaseインストレーション・ガイド』を参照してください。
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={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
を使用します。この設定では、通常、最高のパフォーマンスを得ることができます。
フィールドから文字を切り捨てる場合は、LRTRIM
、LTRIM
および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 = [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
親トピック: SQL*Loaderエクスプレス