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を参照してください。