CREATE EXTERNAL TABLE ステートメント

表は通常はデータベース内に存在しますが、外部表は、区切り文字で区切られたテキスト・ベースのファイルとして、または固定長形式のファイルとしてデータベース外部に存在します。

外部表は以下のことを行うために使用します。
  • データを照会する機能を保持しながら、そのデータをデータベースの外部に保管します。 データベースから外部ファイルにデータをアンロードするには、次のいずれかの SQL ステートメントで外部表をターゲット表として指定します。
    • INSERT SQL
    • SELECT INTO SQL
    • CREATE EXTERNAL TABLE AS SELECT SQL
  • 外部ファイルからデータベース内の表にデータをロードします。 ロード中に、キャスト、結合、列のドロップなどの操作を実行してデータを操作できます。 外部表からデータベースにデータをロードするには、他の表の場合と同様に、SELECT SQL ステートメントの FROM 節を使用します。
  • データを他のアプリケーションに転送します。

抽出、変換、ロード (ETL) プロセスに外部表を使用する利点は、プレーン SQL を使用して当該プロセスを実行できることです。 SQL ベースの ETL プロセスは任意の SQL クライアントから開始できるため、特殊な ETL ツールを必要としません。

外部表のタイプは、以下のいずれかになります。
名前付き
外部表には、通常の表と同様に名前とカタログ項目があります。
一時
外部表には SYSTET<number> という形式のシステム生成名があり、カタログ項目はありません。 例えば、照会の結果を保持する一時外部表がシステムによって作成されることがあります。 このような表の存続期間は、照会が存在する期間です。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むことも、動的 SQL ステートメントを使用して発行することもできます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

ステートメントの許可 ID が保持する特権には、DBADM 権限、または以下の特権または権限のいずれかが必要です。
  • CREATETAB 権限
  • 以下のいずれかの特権または権限:
    • 表スペースでの USE 特権
    • SYSADM 権限
    • SYSCTRL 権限
  • 以下のいずれかの特権または権限:
    • データベースに対する IMPLICIT_SCHEMA 権限 (表の暗黙または明示スキーマ名がない場合)
    • スキーマに対する CREATEIN 特権 (表のスキーマ名が既存のスキーマを指す場合)
    • スキーマに対する SCHEMAADM 権限 (表のスキーマ名が既存のスキーマを指す場合)
副表を定義する場合には、以下のいずれかの条件を満たしている必要があります。
  • 許可 ID は表階層のルート表の所有者と同じでなければなりません。
  • 許可 ID が持つ特権に、表階層のルート表が含まれるスキーマに対する SCHEMAADM 権限が含まれている必要があります。
  • 許可 ID が持つ特権に、DBADM 権限が含まれている必要があります。

構文

このステートメントの構文は、作成される外部表の特性によって異なります。
  • 以下の構文を使用して、新規外部表の表定義をカタログ内に作成します。 表名の指定は必須であるため、結果の外部表は名前付き表になります。 ターゲット・ファイルを識別するには、DATAOBJECT オプションまたは FILE_NAME オプションを指定する必要があります。
    Read syntax diagramSkip visual syntax diagram CREATE EXTERNAL TABLE table-name (,column-definition)LIKEtable-name1view-namenickname USING ( optionoption-value)
  • 以下の構文を使用して、既存の表を新規の外部表のテンプレートとして使用し、その表にソース表の内容を取り込みます。 このステートメントが表名を明示的に指定する場合、結果の外部表は名前付き表になります。そうでない場合、結果の外部表は一時表になります。 ファイル名は、 file-name パラメーター、DATAOBJECT オプション、または FILE_NAME オプションのいずれかで指定する必要があります。
    Read syntax diagramSkip visual syntax diagram CREATE EXTERNAL TABLE table-name file-name USING ( optionoption-value) AS fullselect
1 つ以上の列定義を指定する場合、以下の追加パラメーターが適用されます。
column-definition
Read syntax diagramSkip visual syntax diagram column-name built-in-typeNOT NULL
built-in-type
Read syntax diagramSkip visual syntax diagramSMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)( precision-integer,0, scale-integer)FLOAT(53)( integer)REALDOUBLEPRECISIONDECFLOAT(34)(16)CHARACTERCHAR(1)( integerOCTETSCODEUNITS32)VARCHARCHARACTERCHARVARYING( integerOCTETSCODEUNITS32)FOR BIT DATACLOBCHARACTERCHARLARGE OBJECT(65535)( integerKOCTETSCODEUNITS32)GRAPHIC(1)( integerCODEUNITS16CODEUNITS32)VARGRAPHIC( integerCODEUNITS16CODEUNITS32)DBCLOB(32767)( integerKCODEUNITS16CODEUNITS32)NCHARNATIONALCHARCHARACTER(1)( integer)NVARCHARNCHAR VARYINGNATIONALCHARCHARACTERVARYING( integer)NCLOBNCHAR LARGE OBJECTNATIONAL CHARACTER LARGE OBJECT(16383)( integerK)BINARY(1)( integer)VARBINARYBINARY VARYING(integer)BLOBBINARY LARGE OBJECT(65535)( integerK)DATETIMETIMESTAMP(6)(integer)BOOLEAN

説明

table-name
外部表の名前。 暗黙または明示の修飾子を含む名前は、カタログに既に記述されている表、ビュー、ニックネーム、または別名を指定するものであってはなりません。 スキーマ名を SYSIBM、SYSCAT、SYSFUN、または SYSSTAT にすることはできません (SQLSTATE 42939)。
ファイル名
作成する外部表が格納されるファイル (またはファイルとして扱うことができる任意のメディア) の完全修飾名。 このパラメーターを指定する場合、DATAOBJECT オプションおよび FILE_NAME オプションは指定できません。
入力データ・ファイルが gzip 圧縮されている場合、これが検出され、データは Db2® サーバーによって圧縮解除されます。 COMPRESS GZIP オプションは使用できますが、 gzip 圧縮ファイルのロードに必須ではありません。
入力データ・ファイルが lz4 圧縮されている場合は、 圧縮 LZ4 オプションを指定する必要があります。

REMOTESOURCE オプションが LOCAL (デフォルト値) に設定され、 extbl_strict_io 構成パラメーターが NO に設定されている場合、外部表ファイルへのパスは絶対パスであり、 extbl_location 構成パラメーターで指定されたパスの 1 つでなければなりません。 それ以外の場合、外部表ファイルへのパスは、表定義者の許可 ID が後に続く extbl_location 構成パラメーターで指定されたパスに対する相対パスです。 例えば、 extbl_location/home/xyz に設定され、表定義者の許可 ID が user1である場合、外部表ファイルへのパスは /home/xyz/user1/に対する相対パスになります。

ファイル名は有効な UTF-8 ストリングでなければなりません。
ロード操作の場合は、以下の条件が適用されます。
  • 対象のファイルが既に存在していなければなりません。
  • 必要な権限:
    • 外部表が名前付き外部表である場合、所有者にそのファイルに対する読み取り権限と LOGDIR ディレクトリーに対する書き込み権限が必要です。
    • 外部表が一時外部表である場合、ステートメントの許可 ID にそのファイルに対する読み取り権限と LOGDIR ディレクトリーに対する書き込み権限が必要です。
アンロード操作の場合は、以下の条件が適用されます。
  • 対象のファイルが存在する場合は上書きされます。
  • 必要な権限:
    • 外部表が名前付き外部表である場合、所有者にこのファイルのディレクトリーに対する読み取り権限と書き込み権限が必要です。
    • 外部表が一時外部表である場合、ステートメントの許可 ID にこのファイルのディレクトリーに対する読み取り権限と書き込み権限が必要です。
列定義
列の属性を定義します。
column-name
表を構成する列の名前を指定します。 名前を修飾したり、表の複数の列に対して同じ名前を使用したりすることはできません (SQLSTATE 42711)。
組み込みタイプ (built-in-type)
以下の組み込みデータ・タイプのいずれか。
SMALLINT
短精度整数。
[INTEGER | INT]
長精度整数。
BIGINT
64 ビット整数。
[DECIMAL | DEC | NUMERIC | NUM] (precision-integerscale-integer)
10 進数。
  • precision integer は、総桁数を指定します。 1 から 31 の範囲内でなければなりません。 デフォルトは 5 です。
  • scale integer は、小数点以下の桁数を指定します。 負にすることも、precision より大きくすることもできません。 デフォルトは 0 です。
FLOAT (整数)
単精度または倍精度の浮動小数点数。 指定の長さの範囲に応じて次のように処理されます。
  • 1 から 24 の場合、数値で単精度が使用されます。
  • 25 から 53 の場合、数値で倍精度が使用されます。
FLOAT の代わりに次を指定できます。
REAL
単精度浮動小数点数。
DOUBLE
倍精度浮動小数点数。
DOUBLE PRECISION
倍精度浮動小数点数。
FLOAT
倍精度浮動小数点数。
DECFLOAT(精度-整数)
10 進浮動小数点数。 precision integer は総桁数 (16 または 34) を指定します。 デフォルトは 34 です。
[CHARACTER | CHAR] (整数 [OCTETS | CODEUNITS32])
指定したコード単位数の固定長文字ストリング。 この数は 1 から 255 (OCTETS) または 1 から 63 (CODEUNITS32) の範囲にすることができます。 デフォルトは 1 です。
[VARCHAR | CHARACTER VARYING | CHAR VARYING] (integer [OCTETS | CODEUNITS32])
指定したコード単位数の最大長の、可変長文字ストリング。 この数は 1 から 32672 (OCTETS) または 1 から 8168 (CODEUNITS32) の範囲にすることができます。
FOR BIT DATA
列の内容をビット (バイナリー) データとして扱うように指定します。 他のシステムとのデータ交換の過程で、 コード・ページ変換は行われません。 比較は、データベース照合シーケンスに関係なくバイナリーで行われます。
FOR BIT DATA 節をストリング単位 CODEUNITS32 とともに指定することはできません (SQLSTATE 42613)。
[CLOB | CHARACTER LARGE OBJECT | CHAR LARGE OBJECT] (integer [K] [OCTETS | CODEUNITS32])
指定したコード単位数の最大長の、文字ラージ・オブジェクト・ストリング。 デフォルトの最大長は 65,535 バイトです。
長さの整数に 1024 を乗算する場合は、 K (kilo) 乗数を指定します。
  • K 乗数を使用するかどうかに関係なく、結果の長さは、外部表の CLOB 列の最大長 (65,535 OCTETS、32,767 CODEUNITS16、または 16,383 CODEUNITS32) によって制限されます。 64K OCTETS と 16K CODEUNITS32 は、最大長をそれぞれ 1 超えているため、許可されないことに注意してください。
  • データ・タイプと長さ指定の間、または長さ整数と K 乗数の間には、任意の数のスペース (ゼロ・スペースを含む) を使用できます。 例えば、以下の指定内容はすべて同等であり、有効です。
    CLOB(50K)
    CLOB(50 K)
    CLOB (50   K)
  • K 乗数は、大文字でも小文字でも指定できます。

Unicode データベースでは、文字ストリング・データ・タイプのデフォルトのストリング単位は、NLS_STRING_UNITS グローバル変数または string_units データベース構成パラメーターの値によって決定されます。 Unicode 以外のデータベースでは、文字ストリング・データ・タイプのデフォルトのストリング単位は OCTETS です。

OCTETS
長さ属性の単位がバイトであることを指定します。
CODEUNITS32
長さ属性の単位が Unicode UTF-32 コード単位であることを指定します。このコード単位は、文字数でのカウント数に近似します。 これは、データ・タイプの基となるコード・ページには影響を与えません。 データ値の実際の長さは、データが UTF-32 に変換されたかのように UTF-32 コード単位をカウントすることで決定されます。 CODEUNITS32 は、Unicode データベースでのみ指定できます (SQLSTATE 560AA)。
GRAPHIC (整数 [CODEUNITS16 | CODEUNITS32])
指定の長さの固定長 GRAPHIC ストリング。1 から 127 の 2 バイト、1 から 127 の CODEUNITS16、または 1 から 63 の CODEUNITS32 の範囲で指定できます。 デフォルト長は 1 です。
VARGRAPHIC (整数 [CODEUNITS16 | CODEUNITS32])
指定の最大長の、可変長 GRAPHIC ストリング。1 から 16336 の 2 バイト、1 から 16336 の CODEUNITS16、または 1 から 8168 の CODEUNITS32 の範囲で指定できます。
DBCLOB (整数 [K] [CODEUNITS16 | CODEUNITS32])
文字ラージ・オブジェクト・ストリング (最大長を 2 バイト、Unicode UTF-16 コード単位、または Unicode UTF-32 コード単位で指定)。 デフォルトの最大長は 2 バイトの 32,767 です。
長さの整数に 1024 を乗算する場合は、 K (kilo) 乗数を指定します。
  • K 乗数を使用するかどうかに関係なく、結果の長さは、外部表の DBCLOB 列の最大長 (32,767 CODEUNITS16 または 16,383 CODEUNITS32) によって制限されます。 32K CODEUNITS16 と 16K CODEUNITS32 は、最大長をそれぞれ 1 超えているため、許可されないことに注意してください。
  • データ・タイプと長さ指定の間、または長さ整数と K 乗数の間には、任意の数のスペース (ゼロ・スペースを含む) を使用できます。 例えば、以下の指定内容はすべて同等であり、有効です。
    DBCLOB(50K)
    DBCLOB(50 K)
    DBCLOB (50   K)
  • K 乗数は、大文字でも小文字でも指定できます。

Unicode データベースでは、文字ストリング・データ・タイプのデフォルトのストリング単位は、NLS_STRING_UNITS グローバル変数または string_units データベース構成パラメーターの値によって決定されます。 Unicode 以外のデータベースでは、文字ストリング・データ・タイプのデフォルトのストリング単位は CODEUNITS16 です。

CODEUNITS16
長さ属性の単位が Unicode UTF-16 コード単位であることを指定します。このコード単位は、2 バイトでのカウント数と同じです。 CODEUNITS16 は、Unicode データベースでのみ指定できます (SQLSTATE 560AA)。
CODEUNITS32
長さ属性の単位が Unicode UTF-32 コード単位であることを指定します。 これは、データ・タイプの基となるコード・ページには影響を与えません。 データ値の実際の長さは、データが UTF-32 に変換されたかのように UTF-32 コード単位をカウントすることで決定されます。 CODEUNITS32 は、Unicode データベースでのみ指定できます (SQLSTATE 560AA)。
[NATIONAL CHARACTER | NATIONAL CHAR | NCHAR] (整数)
指定の長さの固定長ストリング。 デフォルト長は 1 です。

NATIONAL CHARACTER タイプは、ストリング単位も定義する nchar_mapping データベース構成パラメーターの値に基づいて、固定長文字ストリングまたは固定長 GRAPHIC ストリングのいずれかにマップされます。

[NATIONAL CHARACTER VARYING | NATIONAL CHAR VARYING | NCHAR VARYING | NVARCHAR] (整数)
指定の最大長の可変長ストリング。

NATIONAL CHARACTER VARYING タイプは、ストリング単位も定義する nchar_mapping データベース構成パラメーターの値に応じて、可変長文字ストリングまたは可変長 GRAPHIC ストリングのいずれかにマップされます。

[NATIONAL CHARACTER LARGE OBJECT | NCHAR LARGE OBJECT | NCLOB] (integer [K])
ラージ・オブジェクト・ストリング (最大長を指定)。 デフォルトの最大長は 2 バイトの 16,383 です。

このデータ・タイプは、ストリング単位も定義する nchar_mapping データベース構成パラメーターの現行値に応じて、文字ラージ・オブジェクト (CLOB) または 2 バイト文字ラージ・オブジェクト (DBCLOB) のいずれかにマップされます。 長さの整数に指定できる値、および K (キロ) 乗数の使用方法については、CLOB パラメーターまたは DBCLOB パラメーター (いずれか該当する方) の説明を参照してください。

BINARY (整数)
指定の長さの固定長バイナリー・ストリング。1 から 255 バイトの範囲でなければなりません。 デフォルト長は 1 です。
[VARBINARY | BINARY VARYING] (整数)
指定した最大長の可変長バイナリー・ストリング。1 から 32672 バイトの範囲でなければなりません。
[BLOB | BINARY LARGE OBJECT] (integer [K])
指定したコード単位数の最大長の、バイナリー・ラージ・オブジェクト・ストリング。 デフォルトの最大長は 65,535 バイトです。
長さの整数に 1024 を乗算する場合は、 K (kilo) 乗数を指定します。
  • K 乗数を使用するかどうかに関係なく、結果の長さは、外部表の BLOB 列の最大長 (65,535 バイト) によって制限されます。 64K は最大長を 1 超えているため、許可されないことに注意してください。
  • データ・タイプと長さ指定の間、または長さ整数と K 乗数の間には、任意の数のスペース (ゼロ・スペースを含む) を使用できます。 例えば、以下の指定内容はすべて同等であり、有効です。
    BLOB(50K)
    BLOB(50 K)
    BLOB (50   K)
  • K 乗数は、大文字でも小文字でも指定できます。
日数
日付。
時刻
時刻。
TIMESTAMP(integer) または TIMESTAMP
タイム・スタンプ。 この整数は、秒未満の小数点以下の桁数を 0 (秒) から 12 (ピコ秒) で指定します。 デフォルトは 6 (マイクロ秒) です。
BOOLEAN
ブール値。
LIKE table-name1 または view-name または nickname
表の列の名前と記述が、指定された表 (table-name1)、ビュー (view-name)、またはニックネーム (nickname) の列と同じであることを指定します。 指定された表、ビュー、またはニックネームは、カタログ内にあるか、宣言済み一時表でなければなりません。 型付き表または型付きビューを指定することはできません (SQLSTATE 428EC)。
LIKE を使用すると、n 列が暗黙的に定義されます。n は、 指定した表、ビューまたはニックネームにおける列数です (指定した表では暗黙的な隠し列を含む)。 既存の表の暗黙的な隠し列に対応する新規表の列も、暗黙的な隠し列と定義されます。 暗黙的な定義は、以下に示すように LIKE の後に何が指定されるかによって左右されます。
  • 表が指定されると、暗黙的な定義には、その表のそれぞれの列の列名、データ・タイプ、非表示属性、および NULL 可能特性が設定されます。 EXCLUDING COLUMN DEFAULTS を指定しないと、列のデフォルト値も入ります。
  • ビューが指定されると、暗黙的な定義には、そのビューに定義した全選択のそれぞれの結果列の列名、データ・タイプ、および NULL 可能特性が設定されます。 ビュー列のデータ・タイプは、表の列に対して有効なデータ・タイプである必要があります。
  • ニックネームが指定されると、暗黙的な定義には、そのニックネームのそれぞれの列の列名、データ・タイプ、および NULL 可能特性が設定されます。
  • 保護対象表を指定すると、新しい表は、その指定した表と同じセキュリティー・ポリシーと保護対象列を継承します。
  • 表が指定されていて、その表に行開始列、行終了列、またはトランザクション開始 ID 列が含まれている場合、新しい表の対応する列はソース列のデータ・タイプのみを継承します。 新規列は生成列とは見なされません。
  • 期間が含まれる表が指定されると、新しい表は期間定義を継承しません。
  • システム期間テンポラル表が指定される場合、新しい表はシステム期間テンポラル表ではありません。
  • random by generation 方式を使用するランダム分散表が指定され、作成される新しい表が同じ表分散を共有しない場合、ランダム分散値の生成に使用される RANDOM_DISTRIBUTION_KEY列は含まれません。

copy-attributes 節に基づいて、列のデフォルト属性を組み込んだり除外したりすることができます。 この暗黙的な定義には、指定した表、ビュー、およびニックネームの他の属性は含まれません。 したがって、新しい表には、主キー、ユニーク制約、外部キー制約、参照整合性制約、トリガー、索引、ORGANIZE BY 指定、PARTITIONING KEY 指定はいずれもありません。

表が LIKE 節内で定義されていて、その表に ROW CHANGE TIMESTAMP 列が含まれている場合、新規表の対応する列は ROW CHANGE TIMESTAMP 列のデータ・タイプのみを継承します。 新規列は生成列とは見なされません。

表が指定される場合、その表の行レベルまたは列レベルのアクセス制御がアクティブになると、これは新しい表で継承されません。

オプション
以下のオプションは、外部表ファイルへのデータのロード、または外部表ファイルからのデータの取得を制御します。 各オプションの値はテキスト・ストリングであり、大/小文字の区別はありません。
BINARYNUMERICS
ASCII 文字表現ではなく、2 進形式で数値データを入力することを指定します。 他の非数値データには影響しません。 テキスト形式の固定長形式データでのみサポートされます。
TRUE または ON

数値データ (DECIMAL タイプを除く) は、2 進形式で入力する必要があります。

サポートされる数値タイプは、SMALLINT、INT、BIGINT、REAL、および DOUBLE です。 整数型 (SMALLINT、INT、および BIGINT) 間で行われる変換を除き、データ型間の変換は行われません。

データ長は、ターゲット列の定義と一致する必要があります (ただし、整数変換は例外です。例えば、2、4、および 8 バイトは、すべて BIGINT 列の有効なゾーン長です)。

データ・ファイル内のすべての数値入力は、ロード操作が実行されているプラットフォームに関係なく、ビッグ・エンディアンであると見なされます。

REAL および DOUBLE 値は IEEE 浮動小数点形式でなければなりません。

FALSE または OFF
数値データは、標準 ASCII 文字表現で入力する必要があります。
BOOLSTYLE または BOOLEAN_STYLE
ロード操作時には、すべてのブール値で同じスタイルが使用されている必要があります。 次のオプションは、使用するブール・スタイルを指定します。
  • 1_0 (これはデフォルト値です)
  • T_F
  • Y_N
  • YES_NO
  • TRUE_FALSE
CARDINALITY
戻されると予想される行数の見積もりをオーバーライドするゼロ以外の正整数の値。
CCSID
入力データ・ファイルのコード化文字セット ID (CCSID)。 この値には CCSID 仕様からの任意の有効な整数値を指定できます。 デフォルト値はありません。 ENCODING オプションの値が UTF8、 LATIN9、または INTERNAL の場合、CCSID オプションと ENCODING オプションは相互に排他的です。
日時に使用されるスタイルは、CCSID が指定されているかどうかによって異なります。
  • CCSID が指定されていて、DATESTYLE、TIMESTYLE、DATEDELIM、および TIMEDELIM が指定されていない場合、DATE_FORMAT、TIME_FORMAT、および TIMESTAMP_FORMAT の値またはデフォルトが使用されます。
  • CCSID が指定されておらず、TIMESTAMP_FORMAT、DATE_FORMAT、および TIME_FORMAT が指定されていない場合、DATESTYLE、TIMESTYLE、DATEDELIM、および TIMEDELIM の値またはデフォルト値が使用されます。
COMPRESS
ロード操作またはアンロード操作の場合に、データ・ファイルのデータが圧縮されるかどうか。
GZIP
データ・ファイルのデータは、GZIP 圧縮アルゴリズムを使用して圧縮されます。
いいえ
データ・ファイルのデータは圧縮されません。 これがデフォルトです。
LZ4
データ・ファイルのデータは、LZ4 圧縮アルゴリズムを使用して圧縮されます。
REMOTESOURCE オプションの値が GZIP または LZ4 の場合は、COMPRESS オプションは指定できません。
CRINSTRING
エスケープされていない復帰 (CR) 文字または復帰改行 (CRLF) 文字を解釈する方法:
TRUE または ON
エスケープされていない CR 文字は、レコード区切り文字ではなくデータとして解釈されます。
FALSE または OFF
エスケープされていない CR は、レコード区切り文字として解釈されます。 これがデフォルトです。
CRINSTRING に固定長形式を使用するのは、 CtrlChars オプションの値が OFF に設定されている場合のみです。
CTRLCHARS
CHAR または VARCHAR フィールドで、ASCII 値の 1 から 31 を許可するかどうか。 NULL 文字、CR 文字、および LF 文字はエスケープする必要があります。 指定可能な値は以下のとおりです。
TRUE または ON
CHAR または VARCHAR フィールドで ASCII 値の 1 から 31 を使用できます。
固定長形式を有効にした場合は、エスケープされていないすべての文字が受け入れられます。
FALSE または OFF
CHAR または VARCHAR フィールドで ASCII 値の 1 から 31 を使用できません。 これがデフォルトです。
固定長形式を有効にした場合は、エスケープされていない文字があるとエラーになります。
固定長形式の例外:
  • \t, \n
  • \r (CRinString オプションを ON に設定した場合)
DATAOBJECT または FILE_NAME
作成する外部表が格納されるファイル (またはファイルとして扱うことができる任意のメディア) の完全修飾名。 このオプションは、表名の直後にファイルの名前が指定されていない場合は必須です。指定されている場合は、使用できません。

REMOTESOURCE オプションが LOCAL (デフォルト値) に設定され、 extbl_strict_io 構成パラメーターが NO に設定されている場合、外部表ファイルへのパスは絶対パスであり、 extbl_location 構成パラメーターで指定されたパスの 1 つでなければなりません。 それ以外の場合、外部表ファイルへのパスは、表定義者の許可 ID が後に続く extbl_location 構成パラメーターで指定されたパスに対する相対パスです。 例えば、 extbl_location/home/xyz に設定され、表定義者の許可 ID が user1である場合、外部表ファイルへのパスは /home/xyz/user1/に対する相対パスになります。

ファイル名は有効な UTF-8 ストリングでなければなりません。
ロード操作の場合は、以下の条件が適用されます。
  • 対象のファイルが既に存在していなければなりません。
  • 必要な権限:
    • 外部表が名前付き外部表である場合、所有者にそのファイルに対する読み取り権限と LOGDIR ディレクトリーに対する書き込み権限が必要です。
    • 外部表が一時外部表である場合、ステートメントの許可 ID にそのファイルに対する読み取り権限と LOGDIR ディレクトリーに対する書き込み権限が必要です。
アンロード操作の場合は、以下の条件が適用されます。
  • 対象のファイルが存在する場合は上書きされます。
  • 必要な権限:
    • 外部表が名前付き外部表である場合、所有者にこのファイルのディレクトリーに対する読み取り権限と書き込み権限が必要です。
    • 外部表が一時外部表である場合、ステートメントの許可 ID にこのファイルのディレクトリーに対する読み取り権限と書き込み権限が必要です。
DATEDELIM
DATESTYLE オプションで指定された形式に従って、日付のコンポーネントを区切る区切り文字。 空ストリングを指定する場合、日付コンポーネント間に区切り文字はありません。また、日と月は 2 桁の数値として指定する必要があります。 DATESTYLE が MONDY または MONDY2 に設定されている場合、デフォルトの DATEDELIM 値はスペースです。 TIMESTAMP_FORMAT オプションと DATEDELIM オプションは相互に排他的です。
DATESTYLE
日付フォーマットの解釈方法。 1 から 9 の範囲の日または月の場合、1 桁、2 桁、またはスペースとその後に続く単一の桁を使用します。 DATEDELIM オプションがスペースの場合、日付の後にコンマを指定できます。 次の場合には、エラーが生じます。
  • 日、月、または年にゼロを指定する
  • 存在しない日付を指定する (例えば、8 月 32 日や 2 月 30 日など)。
DATESTYLE オプションと DATE_FORMAT オプションまたは TIMESTAMP_FORMAT オプションは相互に排他的です。
表 1. DateStyle オプションに指定できる値。 次の例は、DATEDELIM が「-」に設定されている場合に、2014 年 3 月 21 日という日付がどのように表されるかを示しています。
説明
YMD 年 (4 桁)、月 (2 桁)、日 (2 桁)。 これがデフォルトです。 2014-03-21
DMY 日 (2 桁)、月 (2 桁)、年 (4 桁)。 21-03-2014
MDY 月 (2 桁)、日 (2 桁)、年 (4 桁)。 03-21-2014
MONDY 月 (3 文字)、日 (2 桁)、年 (4 桁)。 Mar 21 2014
DMONY 日 (2 桁)、月 (3 文字)、年 (4 桁)。 21-Mar-2014
Y2MD 年 (2 桁)、月 (2 桁)、日 (2 桁)。 アンロードではサポートされません。 14-03-21
DMY2 日 (2 桁)、月 (2 桁)、年 (2 桁)。 アンロードではサポートされません。 21-03-14
MDY2 月 (2 桁)、日 (2 桁)、年 (2 桁)。 アンロードではサポートされません。 03-21-14
MONDY2 月 (3 文字)、日 (2 桁)、年 (2 桁)。 アンロードではサポートされません。 Mar 21 14
DMONY2 日 (2 桁)、月 (3 文字)、年 (2 桁)。 アンロードではサポートされません。 21-Mar-14
DATETIMEDELIM
TIMESTAMP データ・タイプの日付構成要素と時刻構成要素を区切る 1 バイト文字。
デフォルトの区切り文字はスペース (' ') です。
日付構成要素と時刻構成要素の間の区切り文字は必須ではありません。 例えば、以下の値はどちらも有効です。
2010-10-10 10:10:10
2010-10-1010:10:10
DATE_FORMAT
データ・ファイルの日付フィールドの形式。 値は、 TIMESTAMP_FORMAT スカラー関数で受け入れられる任意の日付形式ストリングにすることができます。 デフォルトは YYYY-MM-DD です。 DATE_FORMAT オプションと DATEDELIM オプションまたは DATESTYLE オプションは相互に排他的です。
DECIMALDELIM または DECIMAL_CHARACTER
データ・タイプ FLOAT、DOUBLE、TIME、および TIMESTAMP の小数点区切り文字。 許可される値は、 ',' および '.'です。
DECPLUSBLANK
アンロード操作時に正の 10 進値を表す方法を指定します。
このオプションには以下のいずれかの値を指定できます。
NONE
これがデフォルトです。
この値は、符号なしで正の 10 進値を表します。
PLUS
正の 10 進数値を '+' 符号で表すことを指定します。
BLANK
正の 10 進数値を '+' 符号の代わりにブランク符号で表すことを指定します。
ロード操作に DECPLUSBLANK オプションを指定した場合、出力は影響を受けません。
表 test の DDL (decimal (6,2)) と DECPLUSBLANK オプションに指定できるすべての値を示す例:
1234
-4563
  • Create external table '/tmp/unload.txt' using (DECPLUSBLANK NONE) as select * from test:
    unload.txt
    1234.00
    -4563.00
  • Create external table '/tmp/unload.txt' using (DECPLUSBLANK PLUS) as select * from test:
    unload.txt
    +1234.00
    -4563.00
  • Create external table '/tmp/unload.txt' using (DECPLUSBLANK BLANK) as select * from test:
    unload.txt
     1234.00
    -4563.00
DELIMITER または COLUMN_DELIMITER
入力レコードまたは出力レコードのフィールドを区切るために使用する文字。 デフォルトは垂直バー ('|') です。
以下のいずれかの方法で、7 ビットの ASCII 範囲内の文字 (10 進値 1 ‑ 127) を指定できます。
  • 単一文字として (例えば、 DELIMITER ';')
  • 対応する ASCII 10 進値 (例えば、 DELIMITER 59 または DELIMITER '59') を指定する。
  • 対応する ASCII 16 進値を指定する (例えば、 DELIMITER x'3B')。

10 進値の範囲 128 から 255 は、対応する ASCII 10 進値または 16 進値を指定することにより、ISO 文字セットの入力ファイルでのみサポートされます。 入力ファイルが UTF8 文字セットの場合、この区切り値の範囲はサポートされません。

ENCODING
ファイル内のデータのタイプ。
UTF8
ファイルは、 すべての文字データに UTF8 エンコードを使用します。
LATIN9
ファイルは、 すべての文字データに LATIN9 エンコードを使用します。
INTERNAL
ファイルは UTF8 と LATIN9 の両方のエンコードを混合して使用しているか、使用されているエンコードのタイプが不明です。 システムではデータを検査し、必要に応じてデータをエンコードします。 このデータ検査によって全体的なパフォーマンスが低下するため、この値は必要な場合にのみ使用してください。 これがデフォルトです。
INTERNAL
これはデフォルト・オプションです。
ファイルは UTF8 と LATIN9 の両方のエンコードを混合して使用しています。
ファイルは Netezza の内部形式でエンコードされているので、ENCODING (INTERNAL) を使用して Netezza から抽出されたファイルとしてのみ使用する必要があります。
ターゲット列が CODEUINTS32 (NCHAR/VARCHAR) の場合は、入力データが有効な UTF-8 文字であるかどうかが検証されます。
このオプションは Unicode データベースでのみサポートされます。
DBCS_GRAPHIC
この値は、ロード操作に限り使用できます。アンロード操作には使用できません。 この値を指定する場合は、CCSID オプションも指定する必要があります。 ロード操作時に、GRAPHIC または VARGRAPHIC タイプのフィールドは、指定された CCSID の 2 バイト文字セットを使用してエンコードされます。その他すべてのタイプのフィールドは、指定された CCSID の混合バイト文字セットを使用してエンコードされます。
注: EXPORT ユーティリティーによって作成された DEL ファイルは単一の文字セットを使用してエンコードされるため、ENCODING を DBCS_GRAPHIC に設定することはできません。
ENCODING オプションの値が UTF8、 LATIN9、または INTERNAL の場合、CCSID オプションと ENCODING オプションは相互に排他的です。
ESCAPECHAR または ESCAPE_CHARACTER
エスケープ文字として認識される文字。 エスケープ文字は、それに続く文字 (それ以外の場合はフィールド区切り文字または行の終わりシーケンス文字として扱われる) が、代わりにフィールド内の値の一部として扱われることを示します。 GRAPHIC ストリング・データの場合、エスケープ文字は無視されます。 デフォルトはありません。
FILLRECORD
ロード操作の場合、レコードのフィールドは、左から右にターゲット表の列にロードされます。 このオプションは、入力レコードに含まれているフィールドの数を、ターゲット表に定義されている列の数より少なくすることができるかどうかを示します。
TRUE または ON
値が欠落しているすべての列が NULL 可能である場合、入力行には少ない数のフィールドを含めることができます。 欠落している値は NULL に設定されます。 値が欠落している 1 つ以上の列が NULL 可能でない場合、レコードはリジェクトされます。
FALSE または OFF
含まれている列の数が少ない入力行はリジェクトされます。 これがデフォルトです。
FORMAT または FILE_FORMAT
ソース・ファイルのデータ・フォーマット:
テキスト
ロードまたはアンロードされるデータはテキスト区切り形式です。 これがデフォルトです。
INTERNAL
データは Netezza Platform Software (NPS) で使用される内部フォーマットです。 この値は、ファイルからデータベースにデータをロードする際に限り有効です。データをファイルにアンロードする際には無効です。 FORMAT オプションでこの値を指定する場合は、以下のオプションも指定しなければならず、その他のオプションは指定できません。
  • DATAOBJECT または FILE_NAME。
  • REMOTESOURCE、SWIFT、または S3。 REMOTESOURCE オプションを指定する場合は、値は LOCAL または YES でなければなりません。
  • COMPRESS。 これは GZIP に設定する必要があります。
BINARY
データは Db2 で使用される内部フォーマットです。
FIXED
データは固定長形式です。
固定長形式は、ロード操作でのみサポートされます。
固定長形式のファイルでは、順序位置 (オフセット) を使用して、レコード内でのフィールドの位置を指定します。
注:
  • 固定長形式では、以下の外部表オプションはサポートされません。
    • Delimiter
    • Encoding
    • EscapeChar
    • FillRecord
    • IgnoreZero
    • IncludeZeroSeconds
    • Lfinstring
    • QuotedValue
    • RequireQuotes
    • TimeExtraZeros
    • TruncString
  • フィールド区切り文字はありません。
  • レコードの終わりを示す区切り文字は、最後のレコードにも必要です。
  • 一般に、固定長形式ファイルのデータには小数点も時刻の区切り文字も含まれません。区切り文字は不要であり、スペースが区切り文字として使用されるためです。
  • フィールドのサイズが固定されているので、区切り文字の位置も固定されます。位置はレイアウト定義で指定します。 その定義は、固定長形式のデータ・ファイルごとに用意します。
  • 固定形式のデータをデータベースにロードするには、フィールドのターゲット・データ・タイプおよびレコード内での位置を定義する必要があります。
  • 固定長形式のファイル内のすべてのフィールドをロードしなければならないわけではありません。 充てん文字 指定を使用してフィールドをスキップできます。
  • データ・ファイル内のフィールドの順序は、ターゲット表の順序と一致する必要があります。 あるいは、フィールドの順序をデータベースの列として指定する外部表定義を作成する必要があります。
  • 外部表定義を INSERT - SELECT ステートメントと組み合わせて使用すると、フィールドの順序を変更できます。
  • 通常、不明な値または NULL 値は、NULL を表すものとして分類された既知のデータ・パターンで表されます。
以下のパラメーターは、外部表の FORMAT オプションを FIXED に設定した場合に適用されます。
レイアウト
必須。
レイアウトとは、ゾーン定義またはフィールド定義の順序付きコレクションです。 これにより、入力レコードの各フィールドの位置を定義します。
中括弧 { } 内にゾーン定義をコンマ区切りで指定します。
各ゾーン定義は、相互排他的で重複しない節から構成されます。
デフォルト値なし。
これらの節は以下の順序で指定する必要があります (ただし、一部の節はオプションであり、空にしてもかまいません)。
USE TYPE
オプション。
ゾーンが、通常のデータ・ゾーン、参照ゾーン、充てん文字ゾーンのいずれであるかを示します。
データ・ゾーンの場合、この値は省略します。
参照ゾーンは REFとして指定されます。 この指定は、別のゾーンがゾーン長または NULL 値を決定するためにこのゾーンを参照することを意味します。
充てん文字ゾーンは、 FILLERとして指定されます。 充てん文字ゾーンは、そのバイトまたは文字をデータ・ファイル内の充てん文字として扱うことを指定します。
名前
オプション。
ゾーンの名前。
現在、この定義は使用されていません。 通常は、フィールドを識別するために指定します。
タイプ
オプション。
ゾーンのタイプを定義します。
タイプを指定しない場合は、対応する表列のタイプのデフォルト値が使用されます。
有効な値は、以下のとおりです。
  • CHAR
  • VARCHAR
  • NCHAR
  • NVARCHAR
  • SMALLINT
  • BIGINT
  • BINARY
  • VARBINARY
  • GRAPHIC
  • VARGRAPHIC
  • FLOAT
  • DOUBLE
  • DEC、NUM、または NUMERIC
  • DECFLOAT
  • BOOLEAN
  • 日数
  • 時刻
  • TIMESTAMP
STYLE
オプション。
ゾーンの表記を定義します。
デフォルトの表記は、ゾーン・タイプと Format オプションによって決まります。
それ以外のスタイルは、対応する非テキストのゾーン・タイプにのみ有効です。
有効な値は、以下のとおりです。
  • INTERNAL

    テキスト・ゾーン (つまり、char、varchar、nchar、nvarchar) にのみ有効。

  • DECIMAL

    整数ゾーン・タイプと数値ゾーン・タイプに有効。

  • DECIMALDELIM <'decimal-delim'>

    数値、浮動小数点、倍精度、時刻スタイル (時刻およびタイム・スタンプ) のゾーン・タイプに有効。

  • FLOATING

    浮動小数点または倍精度のゾーン・タイプに有効。

  • EXPONENTIAL

    浮動小数点または倍精度のゾーン・タイプに有効。

  • YMD <'date-delim'>

    外部表オプションの DateStyle と DateDelim でサポートされる他の日付スタイルも含めて、日付ゾーンに有効。

  • 12Hour <'time-delim'>

    外部表オプションの TimeStyle と TimeDelim でサポートされる他の時刻スタイルも含めて、時刻ゾーンに有効。

  • 24Hour <'time-delim'>

    外部表オプションの TimeStyle と TimeDelim でサポートされる他の時刻スタイルも含めて、時刻ゾーンに有効。

  • YMD <'date-delim'> 24Hour <'time-delim'>

    外部表オプションの DateStyle、DateDelim、TimeStyle、TimeDelim でサポートされる日付スタイルと時刻スタイルの他の組み合わせも含めて、タイム・スタンプ・ゾーンに有効。

  • TRUE_FALSE, Y_N, 1_0

    BoolStyle 外部表オプションでサポートされる他のブール値スタイルも含めて、ブール値ゾーンに有効。 スタイルは形式に合致していなければなりません。

LENGTH
オプション。
bytes または characters の後に、数または参照ゾーンへの内部参照を指定します。
バイト数または文字数は、指定するか、または参照ゾーンを介して参照します。
参照ゾーンまたは充てん文字ゾーンの場合は、内部参照は使用できません。 参照ゾーンの場合は、参照されている値を取得するためにデータ・ファイルからデータを読み取る方法をバイト数で指定します。
正符号と負符号を次のように使用できます。
BYTES @2 + 10
BYTES @2 - 10
NULLIF
オプション。
ゾーンの NULLESS 属性の定義。
フィールド内に存在していればフィールドが NULL であることを示す既知のデータ・パターンを指定します。
長さは列幅以下です。 最大長は 39 バイトです。
NULLIF 節が表内のいずれかのゾーンで使用されている場合、NULLVALUE オプションはサポートされません。
以下のタイプの参照を使用できます。
@
数値ゾーンへの内部参照。
数値の完全一致。
&
外部参照。
指定した値の完全一致。
&&
分離参照。
ストリングが完全一致すると先行スペースと末尾スペースをスキップします。
以下の例で NULL について詳しく示しています。
表 2. レイアウトの例
use type 名前 タイプ スタイル 長さ Nullif
NA f1 int4 DECIMAL Bytes 10 Nullif & = 0
NA f2 日付 YMD Bytes 10 Nullif &= '2000-10-10'
NA f3 char(20) INTERNAL Chars 10 Nullif &&='ab'
Filler f4 char(10) NA Bytes 10 NA
注:
  • length 節で参照するゾーンは、整数タイプでなければなりません。
  • 参照ゾーンまたは充てん文字ゾーンに NULLIF オプションを指定してはなりません。
  • 参照ゾーンと充てん文字ゾーンが可変長であってはなりません。
  • 可変長ゾーンが自己参照することはできません。
  • length 節で参照されるゾーンは、REF として定義してください。
  • length 節で参照に使用できるのは内部参照 (@) のみです。 外部参照と分離参照はサポートされていません。
  • length 節で参照されるゾーンとそのゾーン自体の間に、参照ゾーンが存在してはいけません。
  • 参照タイプが内部参照 (@) の場合は、NULLIF 節がそれ自体を参照することはできません。
  • 列が NULL 可能でない場合は、NULLIF 節を使用することはできません。
  • 可変長はストリング・タイプのゾーンにのみ使用できます。
  • NULLIF 節が参照できるのは、REF ゾーンまたはそのゾーン自体のみです。
  • length 節で参照されるゾーンを除き、NULLIF 節で参照されるゾーンとそのゾーン自体の間に、参照されるゾーンが他に存在してはいけません。
  • レコード長での参照には、ゾーン 1 のみ指定できます。
  • REF を指定する場合は、それを参照するゾーンが存在しなければなりません。
  • REF ゾーンが非整数の場合のみ、NULLIF 節で外部参照を使用できます。
Recordlength
レコード全体の長さを指定します。この長さには、NULL 標識のバイトを含めます (存在する場合)。レコード区切り文字は存在していても含めません。
値は定数整数です。
値はレイアウト定義内の参照ゾーンへの内部参照にすることもできます。
デフォルト値はありません。
内部参照に正符号と負符号を次のように使用できます。
RECORDLENGTH @1 + 10
RECORDLENGTH @1 - 10
IGNOREZERO または TRIM_NULLS
CHAR フィールドと VARCHAR フィールド内のバイナリー値ゼロを廃棄するかどうかを指定します。
TRUE または ON
バイト値ゼロは無視されます。
FALSE または OFF
バイト値ゼロは無視されません。 これがデフォルトです。
KEEP
バイナリー値ゼロは受け入れられ、入力フィールドの一部として使用できます。
INCLUDEHEADER または COLUMN_NAMES
アンロード操作の場合に、表の列名が外部表ファイルのヘッダーとして組み込まれるかどうか。
TRUE または ON
表の列名がヘッダーとして組み込まれます。
FALSE または OFF
表の列名はヘッダーとして組み込まれません。 これがデフォルトです。
INCLUDEZEROSECONDS
アンロード操作の場合に、秒の値が使用不可の場合に秒の値として 00 を指定するかどうか。
TRUE または ON
秒を示す値として 00 を指定します。
FALSE または OFF
秒の値は指定しないでください。 これがデフォルトです。
INCLUDEHIDDEN
ロード操作の場合に、隠し列の値がデータ・ファイル内に存在するかどうかを指定します。

INCLUDEHIDDEN オプションは、LIKE 節または SAMEAS 節を使用して外部表を作成していて、基本表に隠し列がある場合に機能します。

はい
データ・ファイルに、隠し列に対する値が含まれています。
いいえ
データ・ファイルに、隠し列に対する値が含まれていません。 これがデフォルトです。 このデフォルト値は、レジストリー変数 DB2_EXTBL_INCLUDE_HIDDEN_COLSを使用して変更できます。
LFINSTRING
ストリング・データ内のエスケープされていない改行 (LF または改行と呼ばれることもある) 文字を解釈する方法を指定します。
TRUE または ON
エスケープされていない LF 文字は、レコードの最後のフィールドにある場合にのみレコード区切り文字として解釈されます。それ以外の場合はデータとして扱われます。 レコードの最後のフィールドにある LF 文字をデータとして処理するには、そのフィールドの値を単一引用符または二重引用符で囲みます。
FALSE または OFF
エスケープされていない LF 文字は、その位置に関係なく、レコード区切り文字として解釈されます。 これがデフォルトです。

このオプションは、アンロード操作ではサポートされません。

重要: この SQL 互換性の機能強化は、 Db2 バージョン 11.5 モディフィケーションパック 2 以降のバージョンでのみ使用できます。
LOGDIR または ERROR_LOG
以下のファイルの書き込み先ディレクトリー。
<database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.bad
拒否されたレコード (処理できなかったレコード) を含むファイル。
<database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.log
ログ・ファイル。
デフォルトは、外部表ファイルの書き込み先のディレクトリーです。 .bad ファイルまたは .log ファイル用に構成された名前の長さが最大許容値を超える場合、外部表を含むファイルの名前 ( <file-name>で示されます) は、最大値を超えないように切り捨てられます。

パーティションに対する操作を実行中に .log ファイルまたは .bad ファイルが生成される場合、生成されたファイルの名前の末尾に、ピリオドに続いて 3 桁のパーティション番号が付加されます。

MAXERRORS または MAX_ERRORS
ロード操作の場合に、システムが処理を停止し、即時にロードをロールバックする、リジェクトされたレコード数のしきい値。 デフォルトは 1 (つまり、1 つのレコードがリジェクトされるとロールバックが行われます) です。
固定長形式には、以下の条件が適用されます。
  • パーサーは、行ごとにエラーを 1 つ報告するのではなく、フィールドまたはゾーンごとにエラーを報告します。
  • 同じ行についてのエラーがいくつも報告されることがあります。
  • パーサーは、フィールドまたはゾーンにエラーを検出すると、そのフィールドまたはゾーンの長さを使用して回復します。 そして、レコードの終わりに達するか、リカバリー不能エラーが発生するか、あるいは MaxErrors 制限に達するまで、次のフィールドまたはゾーンから処理を再開します。
  • リカバリー不能エラーとしては、以下のエラーがあります。
    • RecordLength が一致しない。
    • RecordDelimiter が見つからない。
    • RecordLength 値が無効である、つまり、値が負の値またはゼロである。
    • ゾーン長が無効である、つまり、値が負の値である。
    • UTF-8 の先頭バイトが無効である。
    • UTF-8 の後続バイトが無効である。
MULTIPARTSIZEMB

DB2_ENABLE_COS_SDK レジストリー変数を ON に設定すると、 Db2 がオブジェクト/ファイルを複数パーツでクラウド・オブジェクト・ストレージにストリーミングできるようにする組み込みベンダー COS SDK を介して、クラウド・オブジェクト・ストレージとの Db2 リモート・ストレージ 通信が容易になります (「マルチパート・アップロード」とも呼ばれます)。 このパラメーターは、アンロードされるファイルのマルチパート・アップロードのパート・サイズをメガバイト (MB) 単位で指定し、 MULTIPARTSIZEMB dbm config パラメーターで指定された値をオーバーライドします。 このオプションは、バージョン 11.5 モディフィケーションパック 7 以降、 Linux (x86) 環境でのみ使用できます。

MAXROWS または MAX_ROWS
正整数に設定されている場合、このオプションは処理される外部表のレコード (行) の最大数を指定します。 0 (デフォルト) に設定されている場合、制限はなく、すべての行が処理されます。 ロード操作中に、MAXROWS が正の値に設定されている場合、その数の行が処理されると、リジェクトまたはスキップされた行があるかどうかに関係なく、システムはロード操作を終了し、挿入されたレコードをすべてコミットします。
MERIDIANDELIM
区切り文字ありおよび区切り文字なしの 12 時間形式の時刻値の AM トークンまたは PM トークンと秒部分を分離する 1 バイト文字。
デフォルトの区切り文字はスペース (' ') です。
秒部分と AM トークンまたは PM トークンの間の区切り文字は必須ではありません。 例えば、以下の値はどちらも有効です。
1:02:46.12345 AM
1:02:46.12345AM
NOLOG
外部表の .log ファイルを作成するかどうかを指定します。
このオプションは、 .bad ファイルには適用されません。
可能な値は以下のとおりです。
はい
.log ファイルなしは作成されません。
いいえ
.log ファイルが作成されます。
これがデフォルトです。
NULLVALUE または NULL_VALUE
NULL 値を示すために使用される最大 4 バイトの UTF-8 ストリング。 デフォルトは 'NULL' です。
PARTITION
Database Partitioning Feature (DPF) がデータベースに対して有効になっている場合、1 つの外部表を複数のファイルにパーティション化することができます。 外部表を構成する各データ・ファイルの名前には、ピリオドとそれに続く 3 桁の数字 (パーティション番号を示す 000 から 999 までの数字) が接尾部として付加されます。 例えば、dataFile.txt という名前の外部表が 3 つのパーティションに分割されている場合、外部表を構成する各ファイルには、それぞれ dataFile.txt.000dataFile.txt.001dataFile.txt.002 という名前が付けられます。 これらのファイルはすべてのメンバーからアクセス可能でなければなりません。
パーティション化された外部表では、PARTITION オプションにより、ステートメントが適用されるパーティション (複数可) が指定されます。
PARTITION ALL
ステートメントは、外部表を構成するすべてのパーティションに適用されます。 アンロード操作の場合、この値のみ許可されています。
区画 (n から n)
ステートメントは、指定された範囲のすべてのパーティションに適用されます。例: PARTITION (54 TO 62)
PARTITION (nn、...)
ステートメントは、指定されたパーティション (複数可) にのみ適用されます。例: PARTITION (53) または PARTITION (51,57,58)。 複数のパーティション番号を指定する場合、昇順で指定する必要があり (SQLSTATE=42615 の sqlcode SQL0263N)、重複することはできません (SQLSTATE=42615 の sqlcode SQL0265N)。

パーティション化された外部表に対する操作を実行中に .log ファイルまたは .bad ファイルが生成される場合、生成されたファイルの名前の末尾に、ピリオドに続いて 3 桁のパーティション番号が付加されます。

DPF が使用可能で、PARTITION オプションが指定されていない場合、外部表はコーディネーター・メンバー上の単一パーティション表として扱われます。 外部表ファイル、.log ファイル、.bad ファイルの名前にパーティション番号の接尾部は付けられません。

DPF が使用可能になっていない場合は、PARTITION オプションを指定できますが、指定できるのは値 ALL、(0 から 0)、または (0) (SQL0644N) のみです。 何の影響も及ぼしません。

REMOTESOURCE オプションと PARTITION オプションは相互に排他的です。

QUOTEDNULL
ロード操作の場合、単一引用符または二重引用符で囲まれ、NULLVALUE または NULL_VALUE オプションで指定された NULL 値と一致する値 (例えば、 "NULL" や 'NULL') を解釈する方法。
TRUE または ON
値は NULL 値として解釈されます。 これがデフォルトです。
FALSE または OFF
値は文字ストリングとして解釈されます。
QUOTEDVALUE または STRING_DELIMITER
データ値を引用符で囲むかどうか。
SINGLE または YES
データ値は単一引用符 (') で囲まれます。
DOUBLE
データ値は二重引用符 (") で囲まれます。
いいえ
データ値は引用符で囲まれません。 これがデフォルトです。
RECORDDELIM または RECORD_DELIMITER
行 (レコード) 区切り文字として解釈されるストリング・リテラル。 デフォルトは '\n' です。

CRINSTRING が TRUE に設定されている場合、RECORDDELIM に CR ('\r') 文字を含めることはできません。 ただし、唯一の例外として、テキスト形式のみの CRINSTRING で CRLF ('\r\n') 区切り文字を含めることができます。

REMOTESOURCE
外部表ファイルが存在する場所、および外部表がリモート・システムにある場合、ファイル・データを圧縮するかどうか。
LOCAL
ファイルはローカル・サーバー (つまり、データベースをホストするシステム) 上にあります。 これがデフォルトです。
はい
ファイルはローカル・サーバー以外のシステム上にあります。 例えば、クライアント・システムがデータベースに接続されていて、そのシステムにファイルが存在する場合に、YES と指定します。 ファイル・データは、転送前に圧縮されません。
GZIP
YES と同様ですが、ファイル・データは、データが転送される前に GZIP 圧縮アルゴリズムを使用して圧縮され、受信後に圧縮解除される点が異なります。 これにより、大量の圧縮可能データが転送されるときの全体的なパフォーマンスが向上します。
LZ4
YES と同様ですが、ファイル・データは、データが転送される前に LZ4 圧縮アルゴリズムを使用して圧縮され、受信後に圧縮解除される点が異なります。 これにより、大量の圧縮可能データが転送されるときの全体的なパフォーマンスが向上します。

REMOTESOURCE、SWIFT、および S3 の各オプションは相互に排他的です。 REMOTESOURCE オプションと PARTITION オプションは相互に排他的です。 REMOTESOURCE オプションの値が GZIP または LZ4の場合、COMPRESS オプションは指定できません。

REQUIREQUOTES
引用符が必須かどうか。
TRUE または ON
引用符は必須です。 QUOTEDVALUE オプションは、YES、SINGLE、または DOUBLE に設定する必要があります。
FALSE または OFF
引用符は必須ではありません。 これがデフォルトです。
SKIPROWS または SKIP_ROWS
ロード操作の場合、データのロードを開始する前にスキップする行数。 デフォルトは 0 です。 スキップされた行はスキップされる前に処理されるため、スキップされた行は引き続き処理エラーを引き起こす可能性があります。
SOCKETBUFSIZE
ソース・ファイルから読み取られるデータのチャンクのサイズ (バイト単位)。 値の有効範囲は 64 KB から 800 MB です。 この範囲外の値を指定すると、値は最も近い有効な値に設定されます。 デフォルトは 8 MB です。
STRICTNUMERIC
ロード操作の場合、DECIMAL フィールドに挿入される値のスケールがフィールドに定義されているスケールを超えたときに、その値を処理する方法。
TRUE または ON
挿入される値を含む行はリジェクトされます。 例えば、以下のいずれかの値が DECIMAL(5,3) フィールドにロードされた場合、その値を含む行はリジェクトされます。
12.666666666
-98.34496862785
0.00089
FALSE または OFF
挿入される値が含まれている行は受け入れられ、フィールドに定義されたスケールを超える小数部の部分は切り捨てられます。 これがデフォルトです。 例えば、上記の例の値は次のように変換されます。
12.666
-98.344
0.000
SWIFT
ソース・データ・ファイルが Swift オブジェクト・ストア内にあることを指定します。 REMOTESOURCE、SWIFT、および S3 の各オプションは相互に排他的です。 ファイル名を指定するには、DATAOBJECT オプションを使用します。
構文:
SWIFT (endpoint, authKey1, authKey2, bucket)
ここで、
エンドポイント
SWIFT Web サービスの URL を指定する文字ストリング。
authKey1
ユーザーの検証に使用される Swift オープン・スタック・アカウントのアクセス ID またはユーザー名を指定する文字ストリング。
authKey2
ユーザーの検証に使用される Swift オープン・スタック・アカウントのパスワードを指定する文字ストリング。
バケット
ファイルが入っている Swift オープン・スタック・コンテナー (バケット) の名前。
以下に例を示します。
CREATE EXTERNAL TABLE exttab1(a int) using 
  (dataobject 'datafile1.dat' 
   swift('https://dal05.objectstorage.softlayer.net/auth/v1.0/', 
    'XXXOS123456-2:xxx123456',
    'b207c6e974020737d92174esdf6d5be9382aa4c335945a14eaa9172c70f8df16', 
    'my_dev'
   )
  )
S3
ソース・データ・ファイルが S3 互換オブジェクト・ストア内にあることを指定します。 REMOTESOURCE、SWIFT、および S3 の各オプションは相互に排他的です。 ファイル名を指定するには、DATAOBJECT オプションを使用します。
構文:
S3 (endpoint, authKey1, authKey2, bucket)
ここで、
エンドポイント
S3 互換 Web サービスの URL を指定する文字ストリング。
authKey1
ユーザーおよびすべてのユーザー・アクションの検証に使用されるアクセス・キーの S3 アクセス・キー ID を指定する文字ストリング。 IBM Cloud Object Storageの場合、これは HMAC 資格情報からのアクセス・キー ID です。
authKey2
ユーザーおよびすべてのユーザー・アクションの検証に使用されるアクセス・キーの S3 秘密鍵を指定する文字ストリング。 IBM Cloud Object Storageの場合、これは HMAC 資格情報からの秘密アクセス・キーです。
バケット
ファイルが入っている S3 バケットの名前。
注: IBM Cloud Object Storageの場合、HMAC 資格情報を作成するには、新しいサービス資格情報を作成するときに、 「インライン構成パラメーターの追加」 フィールドに {"HMAC:true} を指定します。
AWS S3 の使用例:
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3.amazonaws.com', 
    'XXXOS123456-2:xxx123456',
    'bs07c6e974040737d92174e5e96d5be9382aa4c33xxx5a14eaa9172c70f8df16', 
    'my_dev'
   )
  )
IBM Cloud Object Storage の使用例:
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3-api.us-geo.objectstorage.softlayer.net',
    '1a2bkXXXsaddntLo0xX0',
    'XXxxiEPjJ7T7WBUz74E6abcdABCDE8Q7RgU4gYY9',
    'my_dev'
   )
  )
AZURE
Microsoft Azure Blob Storage に置かれているソース・データ・ファイルを使用するように指定します。 REMOTESOURCE、SWIFT、S3、および AZURE の各オプションは相互に排他的です。 ファイル名を指定するには、DATAOBJECT オプションを使用します。 構文:
構文:
AZURE (endpoint, authKey1, authKey2, bucket)
ここで、
エンドポイント
AZURE Web サービスの URL を指定する文字ストリング。
authKey1
ユーザーの検証に使用される Azure Blob Storage アカウントのアクセス ID またはユーザー名を指定する文字ストリング。
authKey2
ユーザーの検証に使用される Azure Blob Storage アカウントのアクセス・キーを指定する文字ストリング。
バケット
ファイルが入っている Azure Blob Storage コンテナー (バケット) の名前。
以下に例を示します。
CREATE EXTERNAL TABLE exttab1(a int) using 
  (dataobject 'datafile1.dat' 
   azure('https://my_account.blob.core.windows.net', 
    'my_account',
    'lW+oHjmZecPS++IKgThAHlMUOaFUA5C6Z2RlFmc9JPpK34RO/ZIOywzILxJnzGPHz6d/yDrcQDAwH5wySbOZMQ==', 
    'my_bucket'
   )
  )
IBM Cloud Object Storage の使用例:
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3-api.us-geo.objectstorage.softlayer.net',
    '1a2bkXXXsaddntLo0xX0',
    'XXxxiEPjJ7T7WBUz74E6abcdABCDE8Q7RgU4gYY9',
    'my_dev'
   )
  )
TIMEDELIM
時間コンポーネント (時間、分、および秒) を区切る 1 バイト文字。 デフォルトは ':' です。 TIMEDELIM が空ストリングに設定されている場合、時間、分、および秒はすべて 2 桁の数字として指定する必要があります。 TIMESTAMP_FORMAT オプションと TIMEDELIM オプションは相互に排他的です。
TIMEROUNDNANOS または TIMEEXTRAZEROS
注: このオプションは TIMESTAMP 列にのみ適用されます。
ゼロ以外の精度が小数点以下 6 桁を超える時間値を含むレコードを受け入れる (その後、最も近いマイクロ秒に丸める) か、リジェクトするかを指定します。
はい
すべてのレコードが受け入れられます。 それらのレコードの時間値は最も近いマイクロ秒に丸められます。
いいえ
精度の損失なしに保管可能なレコード (例えば、「08.15.32.123」や「08.15.32.12345600000」は該当しますが、「08.15.32.1234567」は該当しません) のみ受け入れられます。 その他のレコードはすべてリジェクトされます。 これがデフォルトです。
TIMESTYLE
データ・ファイルで使用される時刻形式。
24HOUR
24 時間形式。例えば、23: 55。 これがデフォルトです。
12HOUR
12 時間形式。例えば、11:55 PM。 AM または PM トークンは、その直前にシングル・スペースを入れることができ、大/小文字の区別はありません。
TIMESTYLE オプションと TIME_FORMAT オプションまたは TIMESTAMP_FORMAT オプションは相互に排他的です。
TIMESTAMP_FORMAT
データ・ファイルのタイム・スタンプ・フィールドの形式。 値は、 TIMESTAMP_FORMAT スカラー関数で受け入れられる任意のフォーマット・ストリングにすることができます。 デフォルト値は 'YYYY-MM-DD HH.MI.SS' です。 TIMESTAMP_FORMAT オプションと TIMEDELIM、DATEDELIM、TIMESTYLE、または DATESTYLE オプションは相互に排他的です。
TIME_FORMAT
データ・ファイルの時刻フィールドの形式。 値は、 TIMESTAMP_FORMAT スカラー関数で受け入れられる任意の時刻形式ストリングにすることができます。 デフォルトは HH.MI.SS です。 TIME_FORMAT オプションと TIMEDELIM オプションまたは TIMESTYLE オプションは相互に排他的です。
TRIMBLANKS
外部表でストリング内の先行ブランクまたは末尾ブランク (つまり、先行または末尾のスペース文字) を扱う方法。
LEADING
すべての先行ブランク (つまり、最初の非ブランク文字の前にあるブランク) は除去されます。
TRAILING
すべての末尾ブランク (つまり、最後の非ブランク文字の後にあるブランク) は除去されます。
BOTH
先行ブランクおよび末尾ブランクはすべて削除されます。
NONE
ブランクは除去されません。 これがデフォルトです。
ファイルからデータを読み取って、それを外部表にロードする場合は、以下のようになります。
  • QUOTEDVALUE または STRING_DELIMITER に SINGLE、YES、または DOUBLE の値が指定された場合、引用符内の先行ブランクおよび末尾ブランクは除去されません。
  • CHAR および NCHAR データの場合、TRAILING または BOTH の値は末尾ブランクに影響しません。これは、ストリングには末尾ブランクが自動的に再埋め込みされるためです。
TRUNCSTRING または TRUNCATE_STRING
宣言されたストレージ・サイズを超える CHAR または VARCHAR ストリングのシステムでの処理方法。
はい
宣言されたストレージ・サイズを超えるストリング値は切り捨てられます。
いいえ
宣言されたストレージ・サイズをストリング値が超えるとエラーが返されます。 これがデフォルトです。
Y2BASE
100 年の範囲の始まりとなる年。 2 桁で指定された年はこの年からカウントされます。 デフォルトは 2000 です。 DATESTYLE が Y2MD、MDY2、DMY2、MONDY2、または DMONY2 に設定されている場合は、このオプションを必ず指定する必要があります。
表 3. Options
オプション デフォルト ロード操作に適用 アンロード操作に適用
Azure (デフォルトなし) Y Y
BOOLSTYLE または BOOLEAN_STYLE 1_0 Y Y
CARDINALITY (デフォルトなし) Y Y
CCSID (デフォルトなし) Y Y
COMPRESS いいえ Y Y
CRINSTRING いいえ Y Y
CTRLCHARS いいえ Y N
DATAOBJECT または FILE_NAME (デフォルトなし) Y Y
DATEDELIM '-' Y Y
DATETIMEDELIM スペース (' ') Y Y
DATESTYLE YMD Y Y
DATE_FORMAT YYYY-MM-DD Y Y
DECIMALDELIM または DECIMAL_CHARACTER '.' Y Y
DELIMITER '|' Y Y
ENCODING INTERNAL Y Y1 (Y)
ESCAPECHAR または ESCAPE_CHARACTER (デフォルトなし) Y Y
FILLRECORD いいえ Y N
FORMAT または FILE_FORMAT テキスト Y Y
IGNOREZERO または TRIM_NULLS いいえ Y N
INCLUDEHEADER または COLUMN_NAMES いいえ N Y
INCLUDEZEROSECONDS いいえ Y Y
INCLUDEHIDDEN いいえ Y N
LFINSTRING いいえ Y N
LOGDIR または ERROR_LOG 外部表ファイルのターゲット・ディレクトリー Y N
MULTIPARTSIZEMB MULTIPARTSIZEMB dbm config パラメーターによって指定された値。 Y N
MAXERRORS または MAX_ERRORS 1 Y N
MAXROWS または MAX_ROWS 0 Y N
MERIDIANDELIM スペース (' ') Y Y
NOLOG いいえ Y Y
NULLVALUE または NULL_VALUE 'NULL' Y Y
PARTITION (デフォルトなし) Y Y
QUOTEDNULL はい Y N
QUOTEDVALUE いいえ Y N
RECORDDELIM または RECORD_DELIMITER '¥ n' Y N
REMOTESOURCE LOCAL Y Y
REQUIREQUOTES いいえ Y N
SKIPROWS または SKIP_ROWS 0 Y N
SOCKETBUFSIZE 8 MB Y Y
STRICTNUMERIC いいえ Y N
SWIFT (デフォルトなし) Y Y
S3 (デフォルトなし) Y Y
TIMEDELIM ':' Y Y
TIMEROUNDNANOS または TIMEEXTRAZEROS いいえ Y N
TIMESTAMP_FORMAT 'YYYY-MM-DD HH.MI.SS' Y Y
TIMESTYLE 24HOUR Y Y
TIME_FORMAT HH.MI.SS Y Y
TRIMBLANKS NONE Y Y
TRUNCSTRING または TRUNCATE_STRING いいえ Y N
Y2BASE 2000 Y N
1 値 INTERNAL、UTF8、および LATIN9 の場合のみ。
AS SELECT ステートメント
fullselect から得られる結果表の列ごとに、表の対応する列を定義し、その列に照会結果を取り込むことを指定します。 定義する各列には、結果表の対応列から以下の属性が取り込まれます (各データ・タイプに該当する場合)。
  • 列名
  • 列の説明
  • データ・タイプ、長さ、精度、および位取り
  • NULL 可能

  • 処理できないレコード (ある場合) は、次の形式の名前を持つファイルに書き込まれます。
    <database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.bad
    エラーは、次の形式の名前を持つファイルに記録されます。
    <database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.log
    これらのファイルは、LOGDIR または ERROR_LOG オプションによって指定されたディレクトリーにあります。

    パーティションに対する操作の場合、生成された .bad ファイルまたは .log ファイルの名前の末尾に、ピリオドに続いて 3 桁のパーティション番号が付加されます。

  • 指定された外部表を作成、挿入、または削除するには、CREATE、INSERT、または DROP ステートメントを発行します。 一時外部表に挿入したり、一時外部表をドロップしたりすることはできません。
  • 外部表をドロップすると、表定義は削除されますが、表に関連付けられているデータ・ファイルは削除されません。

制約事項

  • リモート外部表の制約事項:
    • ルーチン内では許可されません
    • LOAD CURSOR の使用時には許可されません。
    • リモート外部表 (すなわち、Swift および S3 オブジェクト・ストアに存在しておらず、REMOTESOURCE オプションが LOCAL 以外の値に設定されている外部表) の場合:
      注: 単一の照会または副照会は、一度に複数の外部表から選択することはできません。また、同じ外部表を複数回参照することもできません。 必要に応じて、複数の外部表のデータを 1 つの表に結合し、照会でその表を使用します。

      さらに、1 つの和集合演算に複数の外部表を含めることはできません。

  • 外部表は、オペレーティング・システム内で定義されたユーザー ID でのみ照会できます。
  • 外部表は、Windows システムで実行されている Db2 インスタンスでは使用できません。
  • ロードされるデータは正しくフォーマットされている必要があります。
  • 外部表の削除、切り捨て、および更新はできません。

代替構文

以下の代替構文は標準ではありません。 これらは、旧バージョンの製品や他のデータベース製品との互換性を保持するためにサポートされています。
  • SAMEAS を LIKE の代わりに使用できます。
  • REMOTESOURCE オプションでは、ODBC、JDBC、または OLE-DB を YES の代わりに指定できます。
  • FORMAT オプションを INTERNAL に設定する場合は、COMPRESS オプションに GZIP の代わりに YES の値を指定できます。

  • 外部表にデータをアンロードします。
    CREATE EXTERNAL TABLE 'order.tbl' USING (DELIMITER '|') AS SELECT * from orders;
    CREATE EXTERNAL TABLE 'export.csv' USING (DELIMITER ',') AS SELECT foo.x, bar.y, bar.dt FROM foo, bar WHERE foo.x = bar.x;
  • 外部表からデータをロードします。
    INSERT INTO target SELECT * FROM EXTERNAL 'data.txt' USING (DELIMITER '|');
    INSERT INTO orders SELECT * FROM EXTERNAL 'order.tbl'( order_num INT, order_dt TIMESTAMP) USING (DELIMITER '|');
  • 外部表からデータを選択します。
    SELECT * FROM EXTERNAL 'order.tbl' (order_num INT, order_dt TIMESTAMP) USING (DELIMITER '|');
    SELECT * FROM EXTERNAL 'test.txt' LIKE test_table USING (DELIMITER ',');
    SELECT x, y AS dt FROM EXTERNAL 'test.txt' ( x integer, y decimal(18,4) ) USING (DELIMITER ',');