使用上の注意 - FastLoad

Teradata® FastLoad リファレンス

Product
FastLoad
Release Number
17.00
Published
2020年6月
Language
日本語
Last Update
2021-01-07
dita:mapPath
ja-JP/ije1544831946874.ditamap
dita:ditavalPath
ja-JP/ije1544831946874.ditaval
dita:id
B035-2411
Product Category
Teradata Tools and Utilities
以下に、SET RECORDコマンドを使用する場合の考慮事項を記載します。
  • データ形式

    入力ソースデータは、テキスト形式またはバイナリ形式のいずれかになります。

    • テキスト形式は、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 
システムによっては、Newline(char(1))の代わりにNewline(char(2))の指定が必要な場合があります。