次の表では、INSERT コマンドを使用する際に考慮する必要のある事項について説明します。
対象 | 使用上の注意 |
---|---|
必要な権限 | INSERT ステートメントを使用するには、Teradata FastLoad ジョブに関連付けられているユーザー ID に、指定されたテーブルに対するINSERT特権が必要です。 |
フィールド値の挿入 | 挿入操作においては、CREATE TABLE文に指定されている列の順序に従って、表の中にフィールド値が挿入されます。入力データのフィールド値がTeradata FastLoadテーブルのCREATE TABLEステートメントで定義されているのと同じ順序で格納されている場合、列名のリストをINSERTステートメントで指定する必要はありません (例えば、INSERT INTO table1 VALUES (:f1, :f2) INSERT文の第2の形式を使う場合は、表の定義に基づいてフィールド名のリストが構成されます。挿入操作では、フィールド名とそのデータ型がCREATE TABLE文から取られて、表の定義に使用されます。 フィールド名の定義は、CREATE TABLE文で定義されている列の順序に従って確立されます。そのため、各データ レコード内のフィールドの順序は、表の定義での列の順序と同じでなければなりません。 |
DEFINEコマンドの使用 | INSERTステートメントの 2 番目の形式を使用する場合は、DEFINE コマンドを使用して、Teradata FastLoad ジョブで使用される入力データ ソースまたは INMOD ルーチンの名前を指定します。 INSERT ステートメントが入力される前に 1 つ以上のフィールドを定義するDEFINEコマンドの場合、Teradata FastLoadは INSERT ステートメントから構築された定義にフィールド定義を追加します。 入力フィールド名の前にコロンを付けて(:fieldname)とすると、対応するDEFINEフィールドが必ず存在しなければならないことを示します。INSERT ステートメントに: fieldname式が含まれていない場合、Teradata FastLoadは、前のDEFINEコマンドとリンクせずに、そのままデータベースにコマンドを送信します。
|
SHOW TABLE文の使用 | Teradata SQLのSHOW TABLE文を使用して表の正確な定義を表示する場合、それはBTEQか、別のアプリケーションから実行する必要があります。Teradata FastLoadはこのステートメントをサポートしていません。 |
ANSI/SQL DateTime指定 | Teradata SQL CREATE TABLE文では日時データ型としてANSI/SQLのDATE、TIME、TIMESTAMP、およびINTERVALデータ型を使用できます。INSERT文ではそれらのデータ型を列/フィールド修飾子として指定します。Teradata FastLoad DEFINEコマンドで列/フィールド名を指定する場合は、固定長CHARデータ タイプに変換する必要があります。 |
Unicodeデータの使用 | 下記セッションのUnicodeデータを使用している場合、INSERT文のtname.*バージョンを使用しないでください。
これらの関数は、参照されるテーブルのフィールド名に加えて、Teradata FastLoadが後続のロード操作のUSING節を構築するために内部的に使用するバイト/文字カウントを返します。クライアント システムとデータベース間でCHARおよびVARCHARデータをインポートおよびエクスポートするときにバイト数と文字数の変換が行われるため、内部的に生成されたUSING句は、入力データ ストリームの構造を適切に反映しません。 |
Unicodeセッション文字セットの制約 | 詳細については、<使用上の注意>を参照してください。 |