Teradata FastLoadを使用してデータ変換を実行する場合には、以下の点に注意します。
- DEFINEコマンドを使用してソース データのデータ型指定を変更してからそれをデータベースのTeradata FastLoad表に挿入する場合、各列ごとに1つの型変換のみを定義できます。Teradata FastLoad を使って算術式を伴なう列を定義することはできません。例えば、Teradata FastLoadは年間給与データから月間給与列を計算することはできません。
- Teradata FastLoadを使用してデータをロードし、10進数から文字に変換する場合、符号バイトに対応するために、データを挿入する列の長さをソース データのサイズより大きく定義します。さもなければ、以下のエラー メッセージが表示されます。
3944: Data length is invalid for the data type
データ型とデータ変換の詳細については、Teradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。
有効なデータ変換の例
次の有効な例では、列bをINTEGER型とみなして、文字データを整数データに変換します。
DEFINE a (char(10)) file= . . . ; INSERT INTO table1 (b) VALUES (:a(integer)) ;
有効な冗長変換の例
次の有効な例では、列dをDECIMAL(9,2)型とみなして、ゾーン10進数形式のデータを10進数形式の型に変換します。
DEFINE b (char(9)) file= . . . ; INSERT INTO Table1 (d) VALUES (:b (decimal(9,2)));
冗長変換は、データ変換が行なわれることを示すために使用できます。
無効なデータ変換の例
次のデータ変換の例は、2つの変換、文字から10進数、次いで10進数から整数への変換が要求されているため、無効です。
DEFINE a(char(10)) file= . . . ; INSERT INTO table1 (b) VALUES (:a (decimal(5,2))) ;
Decimal(5,0)データをロードする場合、送信先文字列の長さは、Char(5)ではなくChar(6)と定義する必要があります。以下のデータ変換例は無効です。これは、列サイズが、データをすべて保持できるほど大きくないからです。
DEFINE a(decimal(5,0)) file = .; INSERT INTO table (b) VALUES (: a(char(5));