- データ形式
入力ソースデータは、テキスト形式またはバイナリ形式のいずれかになります。
- テキスト形式は、ASCIIターミナルに表示する文字を含んだデータ ソースです。
- バイナリ形式は、16進数値の形式です。
- 非書式化レコード
UNFORMATTEDを指定した場合、Teradata FastLoadは、データの構造、レコードの終わり区切り文字、特殊文字、およびフィールド長標識に関しては何も想定しません。入力データはテキストまたはバイナリのいずれかにできます。
- INSERT文とDEFINEコマンドの両方を使用してフィールドを定義する必要があります。
- バイナリ データの場合は、各レコードの前に標識バイトを手動で入れる必要があります。
Teradata FastLoadは、DEFINE句をガイドとして使用して、各レコードの実際の長さを計算します。
余分のデータ、つまり使用する予定のないデータは、CHARとして定義できます。
ASCIIデータの改行文字はプラットフォームによって異なります。例えば、あるシステムでは復帰文字(CR)だけを使用するのに対し、他のシステムでは復帰(CR)と行送り(LF)文字の両方を使用して改行します。テキスト ファイルからデータを読み取るときは、プラットフォームに依存する特性ASCII常に考慮してください。
- VARTEXTレコード
VARTEXTを指定すると、Teradata FastLoad入力データはフィールド区切り文字で区切られた可変長テキスト フィールドであると見なされます。入力データ レコードはフィールドごとに順に解析され、各入力テキスト フィールドに対して1つのVARCHARフィールドが作成されます。
VARTEXT指定を使用する場合、Teradata FastLoad DEFINEコマンドで使用できる唯一の有効なデータ タイプ指定は、VARCHARとVARBYTEだけです。
PTは、以下のデータ型仕様をサポートしています。- ヌル フィールド
2 つの連続した区切り文字は、最初の区切り文字の直後に対応するフィールドを null にTeradata FastLoadに指示します。
また、レコードの最後の文字が区切り文字であり、処理するフィールドが少なくとも 1 つ存在する場合は、DEFINE コマンドで定義されているとおり、処理される次のフィールドに対応するフィールドを null にTeradata FastLoad。
- 入力レコードの要件
各入力レコードのフィールドの合計数は、Teradata FastLoad DEFINEコマンドで記述されているフィールドの数以上でなければなりません。合計値が小さい場合、Teradata FastLoadエラー メッセージが生成されます。合計値がそれより多い場合、データベースは余分なフィールドを無視します。
- エラー レコードの処理Teradata FastLoad入力レコードでエラー条件が発生すると、通常はレコードを破棄して終了します。可変長テキストのレコードをロードしている場合、以下のエラー処理オプションを指定すると、この2つの処理の一方または両方を無効にできます。
- DISPLAY_ERRORS
- NOSTOP
両方のオプションを指定し、STDERRを端末画面ではなくファイルの場所にリダイレクトすることにより、Teradata FastLoadジョブは完了まで実行され、すべてのエラー レコードが保存されます。その後、保存されたレコードを修正したうえで、BTEQやMultiLoadなどのユーティリティを使用してそのデータを表にロードすることができます。
- 可変長フィールド フォーマット済みレコードまたはフォーマットされていないレコードで可変長フィールドを使用する場合は、次のいずれかの
- 可変長フィールドの直前に 2 バイトの 2 進整数標識を入れてください。Teradata FastLoadはこの区分を使用して、フィールドの正確な長さを決定します。
- 各可変長フィールドにブランクを埋め込み、固定長フィールドを生成
どちらの場合にも、表定義で示されている最大フィールド長を超えないようにする必要があります。
- DEFINEおよびINSERT仕様
variable-lengthデータに対するDEFINEコマンドおよびINSERT文では、VARCHARの指定を使用します。
User.Table Definition Name Type Size Co1001 Integer 4 bytes Co1002 Varchar(8) up to 8 bytes Co1003 Date 4 bytes define Co1001 (integer), Co1002 (Varchar(8)), Co1003 (date) file = file_path ; insert into User.Table values ( :Co1001, :Co1002, :Co1003 ) ;
可変長フィールドをテーブル定義で使用される最大値 (この場合は 8 バイト) に埋め込むには、列 2 を Char(8) として定義し、テーブル定義は Varchar(8) のままで指定します。
以下の表(User.Table)に、fixed-lengthデータ型の列を3つ示します。各レコードには、4バイトの整数、その後に8バイトの文字、さらに整数形式の4バイトの日付があります。
User.Table Definition Name Type Size Co1001 Integer 4 bytes Co1002 Char(8) 8 bytes Co1003 Date 4 bytes
レコード内のフィールドがテーブル列と正確に対応していると仮定すると、DEFINEコマンドとINSERTステートメントの指定は次のようになります。
define Co1001 (integer), Co1002 (char(8)), Co1003 (date) file = file_path ; insert into User.Table values ( :Co1001, :Co1002, :Co1003 ) ; Co1001 Co1002 Co1003 |00030506|4549474854202020|000CFD1F
DEFINEおよびINSERTの仕様は、(例えば、レコードの終わりの区切り文字としてHEX 0Aを使用して、特殊制御文字やキャリッジリターンなど)、望ましくないデータを定義します。
defineDummy(char(8)), Co1001 (integer), Co1002 (char(8)), Co1003 (date), Newline(char(1)) file = file_path ; insert into User.Table values ( :Co1001, :Co1002, :Co1003 ) ; Control Char Co1001 Co1002 Co1003 0FCA037CB86BFF8A|00030506|4549474854202020|000CFD1F|0A New line