以下の表に、FIELDコマンドを使用する際の考慮事項を示します。
対象 | 使用上の注意 |
---|---|
データ型の変更不可 | datadescの入力レコード フィールドを再定義する場合、fieldname1パラメータを使用してデータ型を文字から小数に変更できません。Teradata MultiLoadジョブがエラー メッセージを出力して異常終了します。 |
コマンドの混在 | 1つ以上のFILLERコマンドをTABLEコマンドおよびFIELDコマンドと混在させることができます。これらのコマンドはすべて、LAYOUTコマンドに続けて指定します。 |
NULLIFのパフォーマンス | 次のコマンドを使用します。... .FIELD fc * CHAR(5); .FIELD fi * INTEGER; ... .DML LABEL ins; INSERT INTO tbl1 VALUES (...,NULLIF(:fc,'empty'), NULLIF(:fi,0),...); または次のような複雑な処理があったとします。 ... .FIELD fs * CHAR(1) ; .FIELD fc * CHAR(5) NULLIF (fs <> 'M') AND (fs <> 'F'); .FIELD fi * INTEGER NULLIF fi < 0; ... .DML LABEL ins; INSERT INTO tbl2 VALUES(...,:fs,:fc,:fi,...);または ... .FIELD fs * CHAR(1) ; .FIELD fc * CHAR(5); .FIELD fi * INTEGER; ... .DML LABEL ins; INSERT INTO tbl2 VALUES(...,:fs, CASE WHEN (:fs = 'M') OR (:fs = 'F') THEN :fc ELSE NULL END, CASE WHEN (:fi >= 0) THEN :fi ELSE NULL END,...); |
パラメータの評価順序 | 同じFIELDコマンドにNULLIFとDROP LEADING/TRAILING BLANKS/NULLSの両方を指定すると、NULLIF句の後にDROP句がTeradata MultiLoadによって評価されます。 例えば、次のFIELDコマンドのfield1に'x'を入力する場合、先行する空白はNULLIFの評価前に削除されないため、NULLIF式は偽と評価されます。 .FIELD FIELD1 * CHAR (5) NULLIF FIELD1 = 'x' DROP LEADING BLANKS; |
DECIMALデータ型の指定 | 以下に、datadescパラメータで指定できるDECIMALデータ型の入力長とフィールド説明を示します。 DECIMAL(x)およびDECIMAL(x,y)
DECIMALデータ型についての詳細は、Teradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。 |
Geospacial型 | Teradata MultiLoadではLOBで表現された地理空間データがサポートされません。 最大64000 |
ARRAYデータ型の指定 | Teradata表のARRAYデータ型として定義する列は、FIELDコマンドでVARCHARデータ型として指定する必要があります。ARRAYデータ型の外部表現はVARCHARです。 次に、COL003列に1次元のARRAYデータ型が含まれるTeradata表定義の例を示します。 CREATE SET TABLE SOURCE_TABLE ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO ( EMP_ID INTEGER, EMP_NO BYTEINT, COL003 SYSUDTLIB.PHONENUMBERS_ARY, COL004 SYSUDTLIB.DECIMAL_ARY, COL005 SYSUDTLIB.INTEGER_ARY) UNIQUE PRIMARY INDEX ( EMP_ID ); 以下はPHONENUMBERS_ARYデータ型のサンプル定義です。 CREATE TYPE PHONENUMBERS_ARY AS CHAR(10) CHARACTER SET LATIN ARRAY [2]; 以下はDECIMAL_ARYデータ型のサンプル定義です。 CREATE TYPE DECIMAL_ARY AS DECIMAL(5,2) ARRAY[2]; 以下はINTEGER_ARYデータ型のサンプル定義です。 CREATE TYPE INTEGER_ARY AS INTEGER ARRAY[2]; 次に、Teradata MultiLoadのFIELD定義例として、SOURCE_TABLEの例を示します。 .FIELD EMP_ID * INTEGER; .FIELD EMP_NO * BYTEINT; .FIELD COL003 * VARCHAR(47); .FIELD COL004 * VARCHAR(17); .FIELD COL005 * VARCHAR(25); 上記の例では、COL003列はVARCHAR(47)と定義されています。これは、テーブルのCOL003列における表現の最大数がこの値であるためです。次に、COL003列の最大表現の計算における内訳を示します。 1バイト(左括弧) +1バイト(単一引用符) +10~20バイト(1番目の要素) +1バイト(単一引用符) +1バイト(カンマ) +1バイト(単一引用符) +10~20バイト(2番目の要素) +1バイト(単一引用符) +1バイト(右括弧) ---- 47バイト COL003列の 2 つのサンプル データ セットを次に示サンプル データ1: ('3105551234','3105551234') サンプル データ2: ('''''''''''''''''''''','''''''''''''''''''''') サンプル データ1には、2つの電話番号要素が含まれています。サンプル データ2には、すべてが単一引用符の要素が2つ含まれています。 上記の例で、COL004列はVARCHAR(17)として定義されており、表内でのCOL004列の最大表示を17としています。 以下はCOL004列の最大表示の計算です。 1バイト(左括弧) 最初の要素用に+1~7バイトを追加 +1バイト(カンマ) 2番目の要素用に+1~7バイトを追加 +1バイト(右括弧) ---- 17バイト 以下はCOL004列のサンプル データです。 サンプル データ1: (-123.45,888.10) サンプル データ2: (+123.45,-888.10) 上記の例で、COL005列はVARCHAR(25)として定義されており、表内でのCOL005の最大表示を25としています。 以下はCOL005列の最大表示の計算です。 1バイト(左括弧) +1~11バイト(1番目の要素) +1バイト(カンマ) +1~11バイト(1番目の要素) +1バイト(右括弧) ---- 25バイト 以下はCOL005列のサンプル データです。 サンプル データ1: (-2147483648,+2147483647) サンプル データ2: (0,0) ARRAYデータ型の最大長を調べるには、Teradata SQLの「HELP TYPE」コマンドを使用します。例えば、ARRAYデータ型例のPHONENUMBERS_ARY、DECIMAL_ARY、およびINTEGER_ARYなどの情報は次のように実行すると取得できます。 help type PHONENUMBERS_ARY; *** Help information returned. One row. *** Total elapsed time was 1 second. Name PHONENUMBERS_ARY Internal Type A1 External Type CV Max Length 47 Array(Y/N) Y Dimensions 1 Element Type CF UDT Name ? Array Scope [1:2] Total Digits ? Fractional Digits ? Contains Lob N Ordering F Ordering Category M Ordering Routine LOCAL Cast N Transform Y Method Y Char Type 1 HELP TYPE DECIMAL_ARY; *** Help information returned. One row. *** Total elapsed time was 1 second. Name DECIMAL_ARY Internal Type A1 External Type CV Max Length 17 Decimal Total Digits ? Decimal Fractional Digits ? Contains Lob N Ordering F Ordering Category M Ordering Routine LOCAL Cast N Transform Y Method Y Char Type 1 Array(Y/N) Y Dimensions 1 Element Type D UDT Name ? Array Scope [1:2] HELP TYPE INTEGER_ARY; *** Help information returned. One row. *** Total elapsed time was 1 second.Name INTEGER_ARY Internal Type A1 External Type CV Max Length 25 Decimal Total Digits ? Decimal Fractional Digits ? Contains Lob N Ordering F Ordering Category M Ordering Routine LOCAL Cast N Transform Y Method Y Char Type 1 Array(Y/N) Y Dimensions 1 Element Type I UDT Name ? Array Scope [1:2] HELP TYPEコマンドで返された情報から、サンプルARRAYデータ型PHONENUMBERS_ARYの最大長は47バイトであることが分かります。同じくDECIMAL_ARYの最大長は17バイト、INTEGER_ARYの最大長は25バイトとなっています。 ARRAYデータ型の外部表現の詳細については、Teradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。 |
グラフィック データ型の指定 | 以下に、datadescパラメータで指定できるGRAPHICデータ型の入力長とフィールド説明を示します。 GRAPHIC(n)
VARGRAPHIC(n)
LONG VARGRAPHIC
LONG VARGRAPHICは、 VARGRAPHIC (16000)でもあります。有効範囲は、32000バイトのフィールドで0~16000です。VARGRAPHICとLONG VARGRAPHICの両方において、入力データの最初の2バイトを占める値mは、入力の長さを文字数でなくバイト数で表わしたものです。マルチバイト文字セットの各文字は2バイトです。
|
Periodデータ型の指定 | 期間は固定です。対象の期間での連続時間の粒度を表わします。期間はPeriodデータ型で実装されます。各期間は次の2つの要素で構成されます。
要素型は次のDateTimeデータ型の1つです。DATE、TIMEおよびTIMESTAMPがあります。 5つのPERIODデータ型に次が含まれます。
PERIODデータ タイプの詳細については、Teradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。 |
関連フィールドの指定 | FIELDコマンドで指定したフィールドはすべてデータベースに送信されるため、Teradata MultiLoadタスクに関係のあるフィールドだけを指定します。 |
startposの指定 | 指定した開始位置は次のようになります。
つまり、入力したレコードの最初のデータ位置は1です。 CONTINUEIF指定とINDICATORS指定の詳細については、LAYOUTコマンドの説明を参照してください。 |
ANSI/SQL DateTimeデータ型の使用 | DATEFORMコマンドを使用して、ANSIDATEをDATEデータ型として指定すると、各DATEフィールドはCHAR(10)フィールドにTeradata MultiLoadによって内部変換されます。Teradata MultiLoadのFIELDコマンドで列/フィールド名を指定するためには、ANSI/SQL DateTimeのTIME、TIMESTAMP、およびINTERVALの各データ型をすべて固定長CHARデータ型に変換する必要があります。 このセクション(ANSI/SQL DateTime指定)の次の表では、ANSI/SQL DateTimeの各仕様について、変換の仕様とフォーマットの例を示しています。 |
次の表に、FIELDコマンドを使用する際のDate/Time情報の考慮事項を示します。
最新の変換の指定と各ANSI/SQL DateTimeの指定の書式例については、Teradata Vantage™ - データ型およびリテラル, B035-1143の「INTERVAL型の説明」を参照してください。
データ型 | 変数の定義 | 変換例 |
---|---|---|
INTERVAL YEAR INTERVAL YEAR (n) |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n+1) 書式(n = 2):yy 例: 98 書式(n = 4): yyyy 例: 1998 |
INTERVAL YEAR TO MONTH INTERVAL YEAR (n) TO MONTH |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n + 4) 書式(n = 2): yy-mm 例: 98-12 書式(n = 4): yyyy-mm 例: 1998-12 |
INTERVAL MONTH INTERVAL MONTH (n) |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n+1) 書式(n = 2): mm 例: 12 書式(n = 4): mmmm 例: 0012 |
INTERVAL DAY INTERVAL DAY (n) |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n+1) 書式(n = 2): dd 例: 31 書式(n = 4): dddd 例: 0031 |
INTERVAL DAY TO HOUR INTERVAL DAY (n) TO HOUR |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n + 4) 書式(n = 2): dd hh 例: 31 12 書式(n = 4): dddd hh例: 0012:59 例: 0031 12 |
INTERVAL DAY TO MINUTE INTERVAL DAY (n) TO MINUTE |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n + 7) 書式(n = 2): dd hh:mm 例: 31 12:59 書式(n = 4): dddd hh:mm 例: 0031 12:59 |
INTERVAL DAY TO SECOND INTERVAL DAY (n) TO SECOND INTERVAL DAY TO SECOND (m) INTERVAL DAY (n) TO SECOND (m) |
n = 桁数 有効な値: 1-4 デフォルト=2 m = 小数点以下の桁数 有効な値: 0-6 デフォルト=6 |
CHAR(n + 10 + m + (m> 0の場合は1、それ以外の場合は0)) 書式(n = 2, m = 0): hh:mm:ss 例: 12:59:59 書式(n = 4, m = 4): hhhh:mm:ss.ssss 例: 0012:59:59.1234 |
INTERVAL HOUR INTERVAL HOUR (n) |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n+1) 書式(n = 2): hh 例: 12| 書式(n = 4): hhhh 例: 0012 |
INTERVAL HOUR TO MINUTE INTERVAL HOUR (n) TO MINUTE |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n + 4) 書式(n = 2): hh:mm 例: 12:59 書式(n = 4): hhhh:mm 例: 0012:59 |
INTERVAL HOUR TO SECOND INTERVAL HOUR (n TO SECOND INTERVAL HOUR TO SECOND (m) INTERVAL HOUR (n) TO SECOND (m) |
n = 桁数 有効な値: 1-4 デフォルト=2 m=小数点以下の桁数 有効な値: 0-6 デフォルト=6 |
CHAR( n + 7+ m + (m >0の場合は1、それ以外の場合は0)) 書式(n = 2, m = 0): hh:mm:ss 例: 12:59:59 書式(n = 4, m = 4): hhhh:mm:ss.ssss 例: 0012:59:59.1234 |
INTERVAL MINUTE INTERVAL MINUTE (n) |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n+1) 書式(n = 2): mm 例: 59 書式(n = 4): mmmm 例: 0059 |
INTERVAL MINUTE TO SECOND INTERVAL MINUTE (n) TO SECOND INTERVAL MINUTE TO SECOND (m) INTERVAL MINUTE (n) TO SECOND (m) |
n = 桁数 有効な値: 1-4 デフォルト=2 m = 小数点以下の桁数 有効な値: 0-6 デフォルト=6 |
CHAR( n + 4 + m + (m > 0の場合は1、それ以外の場合は0)) 書式(n = 2, m = 0): mm:ss 例: 59:59 書式(n = 4, m = 4): mmmm:ss.ssss 例: 0059:59.1234 |
INTERVAL SECOND INTERVAL SECOND (n) INTERVAL SECOND (n,m) |
n = 桁数 有効な値: 1-4 デフォルト=2 m = 小数点以下の桁数 有効な値: 0-6 デフォルト=6 |
CHAR( n + 1 + m + (m > 0の場合は1、それ以外の場合は0)) 書式(n = 2, m = 0): ss 例: 59 書式(n = 4, m = 4): ssss.ssss 例: 0059.1234 |
TIME TIME (n) |
n = 小数点以下の桁数 有効な値: 0–6 デフォルト |
CHAR(8 + n + (n> 0の場合は1、それ以外の場合は0)) 書式(n = 0): hh:mm:ss 例: 11:37:58 書式(n = 4): hh:mm:ss.ssss 例: 11:37:58.1234 |
TIMESTAMP TIMESTAMP (n) |
n = 小数点以下の桁数 有効な値: 0–6 デフォルト=6 |
CHAR(19 + n + (n > 0の場合は1、それ以外の場合は0)) 書式(n = 0): yyyy-mm-dd hh:mm:ss 例: 1998-09-04 11:37:58 書式(n = 4): yyyy-mm-dd hh:mm:ss.ssss 例: 1998-09-04 11:37:58.1234 |
TIME WITH TIME ZONE TIME (n) WITH TIME ZONE |
n = 小数点以下の桁数 有効な値: 0–6 デフォルト=6 |
CHAR(14 + n + (n > 0の場合は1、それ以外の場合は0)) 書式(n = 0): hh:mm:ss{±}hh:mm 例: 11:37:58-08:00 書式(n = 4): hh:mm:ss.ssss{±}hh:mm 例: 11:37:58.1234-08:00 |
TIMESTAMP WITH TIME ZONE TIMESTAMP (n) WITH TIME ZONE |
n = 小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(25 + n + (n > 0の場合は1、それ以外の場合は0)) 書式(n = 0): yyyy-mm-dd hh:mm:ss{±}hh:mm 例: 1998-09-24 11:37:58+07:00 書式(n = 4): yyyy-mm-dd hh:mm:ss.ssss{±}hh:mm 例: 1998-09-24 11:37:58.1234+07:00 |