U sage Notes | FIELD - 使用上の注意 - FastExport

Teradata® FastExportリファレンス - 17.20

Product
FastExport
Release Number
17.20
Published
2022年10月10日
Language
日本語
Last Update
2022-11-21
dita:mapPath
ja-JP/lks1641281534622.ditamap
dita:ditavalPath
ja-JP/gel1618411995444.ditaval
dita:id
B035-2410
Product Category
Teradata Tools and Utilities

以下の表に、FIELDコマンドを使用する際の考慮事項を示します。

FIELDコマンド使用上の注意
対象 使用上の注意
コマンドの配置と頻度 このFIELDコマンドは、LAYOUTコマンドの前になければなりません。

1つ以上のFIELDコマンド、またはFIELDコマンドとFILLERコマンドの組み合わせにより、入力データ レコードの構成を定義し、SELECT文のUSING修飾子の値を指定できます。

ARRAYデータ型の指定 Teradata表内でARRAYデータ型として定義されている列は、FIELDコマンドではVARHCARデータ型として指定しなければなりません。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];

以下はSOURCE_TABLE表のFastExportレイアウト定義のサンプルです。

 .FIELD  EMP_ID *  INTEGER;
   .FIELD  EMP_NO *  BYTEINT;
   .FIELD  COL003  *  VARCHAR(47);
   .FIELD  COL004  * VARCHAR(17);
   .FIELD  COL005  * VARCHAR(25);

上記の例では、COL003列はVARCHAR(47)として定義されています。これは、テーブルのCOL003列での表現が最大で47文字であるためです。

以下は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列のサンプル データです。

サンプル データ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)

Teradata SQL "HELP TYPE"コマンドを使用して、ARRAYデータ型の最大長を調べることができます。例えば、サンプル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を参照してください。

DECIMALデータ型の指定 datadescパラメータで実施したDECIMALデータ型指定では、次の入力長さとフィールド説明が適用されます。

DECIMAL (x)およびDECIMAL (x,y)

  • 長さ: 1、2、4、8、または16バイト(ネットワーク)、パック10進数(メインフレーム)
  • 説明: 128ビット倍精度、浮動小数点

DECIMALデータ タイプの詳細については、Teradata Vantage™ - データ タイプおよびリテラル, B035-1143を参照してください。

Periodデータ型の指定 期間は固定です。対象の期間での連続時間の粒度を表わします。期間はPeriodデータ型で実装されます。各期間は次の2つの要素で構成されます。
  • BEGIN(開始要素)
  • END(終了要素)

要素型は次のDateTimeデータ型の1つです。

  • PERIOD(DATE)
  • PERIOD(TIME[(n)])
  • PERIOD(TIME[(n)] WITH TIME ZONE)
  • PERIOD(TIMESTAMP[(n)])
  • PERIOD(TIMESTAMP[(n)] WITH TIME ZONE)

PERIODデータ タイプの詳細については、Teradata Vantage™ - データ タイプおよびリテラル, B035-1143を参照してください。

ANSI/SQL DateTimeデータ型の使用 DATEFORMコマンドを使用して、ANSIDATEをDATEデータ タイプに指定すると、FastExportは、各DATEフィールドをCHAR(10)フィールドに内部変換します。FastExport FIELDコマンドで列/フィールド名を指定するためには、ANSI/SQL DateTimeのTIME、TIMESTAMP、およびINTERVALデータ タイプを固定長のCHARデータ タイプに変換する必要があります。

次の表は、ANSI/SQL DateTimeの各仕様について、変換の仕様とフォーマットの例を示しています。

以下は、ANSI/SQL Date Timeの仕様の説明です。

DATE
変換後: CHAR(10)
フォーマット: yyy/mm/dd
例: 1998/01/01
TIME
TIME (n)
ここで、nは0から6までの小数点以下の桁数です。(デフォルト = 6。)
変換後: CHAR(8 + n + (n> 0の場合は1、それ以外の場合は0))
フォーマット: hh:mm:ss
例: 11:37:58
フォーマット: hh:mm:ss.ssss
例: 11:37:58.1234
TIMESTAMP
TIMESTAMP (n)
ここで、n は小数点以下の桁数で、0 から 6 です。(デフォルトは6。)
変換後: CHAR(19 + n + (n> 0の場合は1、それ以外の場合は0))
書式(n=0): yyy-mmm-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
フォーマット: 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))
形式: 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
INTERVAL YEAR
INTERVAL YEAR (n)
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後: CHAR(n)
フォーマット: yy
例: 98
書式(n = 4): yyyy
例: 1998
INTERVAL YEAR TO MONTH
INTERVAL YEAR (n) TO MONTH
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後: CHAR(n+ 3)
書式(n = 2): yy-mm
例: 98-12
書式(n = 4): yyyy-mm
例: 1998-12
INTERVAL MONTH
INTERVAL MONTH (n)
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後: CHAR(n)
書式(n = 2): mm
例: 12
書式(n = 4): mmmm
例: 0012
INTERVAL DAY
INTERVAL DAY (n)
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後: CHAR(n)
書式(n = 2): dd
例: 31
書式(n = 4): dddd
例: 0031
INTERVAL DAY TO HOUR
INTERVAL DAY (n) TO HOUR
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後: CHAR(n + 3)
書式(n = 2): dd hh
例: 31 12
書式(n = 4): dddd hh
例: 0031 12
INTERVAL DAY TO MINUTE
INTERVAL DAY (n) TO MINUTE
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後: CHAR(n + 6)
書式(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 + 9 + m + (m> 0の場合は1、それ以外の場合は0) )
書式(n = 2, m = 0): dd hh:mm:ss
例: 31 12:59:59
書式(n = 4、m = 4): dddd hh:mm:ss.ssss
例: 0031 12:59:59:59.1234
INTERVAL HOUR
INTERVAL HOUR (n)
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後: CHAR(n)
書式(n = 2): hh
例: 12
書式(n = 4): hhhh
例: 0012
INTERVAL HOUR TO MINUTE
INTERVAL HOUR (n) TO MINUTE
ここで、nは1から4までの桁数です。(デフォルト = 2。)
変換後:
書式(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 + 6 + 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)
書式(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 + 3 + m + (0 の場合は 1、それ以外m >場合は 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 + m + (m > 0の場合は1、それ以外の場合は0))
書式(n = 2, m = 0): ss
例: 59
書式(n = 4、m = 4): ssss.ssss
例: 0059.1234