TeradataテーブルのARRAYデータ型として定義される列は、Teradata TPumpのFIELD文でVARCHARデータ型として指定する必要があります。ARRAYデータ型の外部表現はVARCHARです。
次に、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];
次に、例SOURCE_TABLEテーブルのLAYOUTの定義例を示します。
.LAYOUT EMPDATAWITHARRAY; .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列のサンプル データです。
サンプル データ1: ('3105551234','3105551234')
サンプル データ2: ('''''''''''''''''''''','''''''''''''''''''''')
サンプル データ1には、2つの電話番号要素が含まれています。サンプル データ2には、すべてが単一引用符の要素が2つ含まれています。
上記の例で、COL004列はVARCHAR(17)として定義されており、表内でのCOL004列の最大表示を17としています。
以下はCOL004列の最大表示の計算です。
1バイト(左括弧)
最初の要素用に1~7バイトを追加
+ 1バイト( カンマ)
2番目の要素用に1~7バイトを追加
+ 1バイト(右括弧)
----
17バイト
次に、COL004列のデータの例を2つ示します。
サンプル データ 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を参照してください。