Teradata PTジョブ スクリプトの作成時に注意すべき単純な構文ルールがいくつかあります。
- 大文字と小文字の区別
- 属性名には、大文字と小文字のいずれを使用しても同じです。
- ほとんどの属性値にも、大文字と小文字のいずれを使用しても同じです。 ただし、ファイル名やディレクトリ名などの属性値は、プラットフォームによっては大文字と小文字が区別されることがあります。
- DEFINE JOB文の構文要素など、属性以外のオブジェクト パラメータでは、大文字と小文字が区別されます。
- オブジェクトの定義 - すべてのTeradata PTオブジェクトは、先に定義しておかないと、Teradata PTジョブ スクリプトの任意の場所で参照できません。
- キーワードの制限 - 列名、属性、その他の値の識別子として、ジョブ スクリプト内でTeradata PTの予約キーワード(OPERATOR、SOURCE、DESCRIPTIONなど)を使用してはいけません。これらの予約キーワードの一覧は、<Teradata® Parallel Transporterリファレンス, B035-2436>で提供されています。
- VARCHARおよびINTEGERの使用 - VARCHARおよびINTEGERキーワードを使用してオペレータの属性を次のように宣言します。VARCHARおよびINTEGERは以下のようなジョブ スクリプトでは必須です。
- DEFINE SCHEMA文で、データ型の指定を行なうために、その他のキーワードも必要となる場合。
- DEFINE OPERATOR文で、属性が宣言されているにもかかわらず属性値が指定されていない場合。
VARCHARおよびINTEGERは、以下のようなジョブ スクリプトでは必須ではありません。- DEFINE OPERATOR文で、属性の宣言に値が含まれている場合。APPLY文内で、属性に値を設定する際には、VARCHARやINTEGERのキーワードは必要ありません。その理由は、属性のデータ型は、オペレータの定義時に指定されているからです。
- 引用符 – 引用符を使用する場合、次の規則を使用します。
- 文字列リテラルは、単一引用符で囲む必要があります。
- VARCHARの属性値は単一引用符で囲み、埋め込み引用符は単一引用符を2つ続けてエスケープする必要があります。
- INTEGERの属性値には、引用符は必要ありません。
- SQL表記法 - 複数行に及ぶSQL文では、行の最後の文字と次の行の最初の文字との間にスペースまたはタブを挿入する必要があります。 スペースまたはタブを使用しないと、2つの行の間に行区切りがないものとして処理され、2つの文字列が誤って結合されます。その結果、エラーが発生したり、意図しなかったSQL文が処理されたりすることになります。
例えば、下記のコードでは、"FINAL"と"INSTANCE"との間にスペースまたはタブが追加されていなければ、エラーが生成されます。データベースは、キーワードとして無効なFINALINSTANCEと見なすためです。
('CREATE TYPE INSV_INTEGER AS INTEGER FINAL INSTANCE METHOD IntegerToFloat() RETURNS FLOAT LANGUAGE C DETERMINISTIC PARAMETER STYLE TD_GENERAL NO SQL RETURNS NULL ON NULL INPUT;')
- コメントの使用 - Teradata PTは以下のようにTeradata PTジョブ スクリプトのどの場所においてもC形式のコメントをサポートしています。
/*<comment>*/