INSERT/INSERT ... SELECT構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage
{ INSERT | INS } [ with_isolated_loading ] [ INTO ] table_name
  { [ VALUES ] ( expression [,...] ) |
    ( column_name [,...] ) VALUES ( expression [,...] ) |
    [ ( column_name [,...] ) ]
    subquery
    [ hash_by ]
    [ local_order_by ]
    [ logging_errors ] |
    JSON { 'JSON_string' | ? } |
    DEFAULT VALUES
  } [;]

構文要素

with_isolated_loading
WITH [NO] [CONCURRENT] ISOLATED LOADING
NOを含めないと、INSERTを同時ロード分離操作として実行できます。
NOを含めると、INSERTは同時ロード分離操作として実行されません。
読みやすくするためにCONCURRENTを含めることができます。
INTO
ANSIに準拠するために必要なキーワードです。INTOを指定しない場合、リクエストはANSI規格に準拠したものではなくなります。
table_name
テーブル、またはビューの名前です。
VALUES
ANSIに準拠するために必要なキーワードです。INTOを指定しない場合、リクエストはANSI規格に準拠したものではなくなります。
この句で使用されるホスト変数については、コロンはオプションです。
column_name VALUESキーワード
指定される。 必須。
指定されない。 オプション。
expression
column_nameで指定された列の新しい行に挿入される定数、または定数式を指定します。定数式とは、定数だけの入った式です(例えば、3+5、または19000/12)。
UDT列に挿入する場合、expressionには、必要なコンストラクタを持つ適切なNEW式と、ドット表記を使用して指定したミュテーター メソッドを含めます。詳細は、<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>を参照してください。
システム値のCURRENT_DATE、DATE、CURRENT_TIME、TIME、およびUSERは、定数式に組み込むことができます。また、DEFAULT関数を使用してデフォルト値を列に挿入することもできます。
expressionの値としてキーワードのNULLを指定することによって、NULLを挿入することもできます。
USING修飾子を使用してインポートされたデータ、またはマクロ パラメータとしてインポートされたデータから取得した値は、'定数'として受け入れられます。
列名のリストを指定しないと、値の挿入順序は、列の定義の順序(左から右へ)に従います。列をスキップすることを示すには、カンマを使用してください。例: 順序付き入力の挿入を参照してください。
値を列にマッピングするときに派生PERIOD列の位置はスキップされます。
列名のリストと式のリストを使用する場合、それぞれの値は、column_nameの位置とexpressionの位置を一致させて指定します。2つのリストの項目の数は、同じでなければなりません。
式リストの要素は、省略されるとNULLとして扱われます。これは、ANSI SQLでは無効です。
派生PERIOD列の値を指定することはできません。
column_name
挿入操作で新しい行の値が挿入される列の名前です。
列名は、任意の順序で指定できます。
column_nameを省略すると、CREATE TABLEまたはCREATE VIEWリクエストで定義されているデフォルト値が使用されます。
派生PERIOD列名を指定することはできません。
派生PERIOD列の開始列と終了列は独自に更新できます。終了列の値は派生PERIOD列の開始列の値よりも大きい値である必要があります。
subquery
挿入される行は、クエリー指定によってアクセスされる列値で構成されます。
列名のリストが省略されている場合、SELECTリクエストは、新しい行を受け取るテーブルにある列数と同じ数の列を問合わせなければなりません。
値を代入しない列のために、nullを選択の式リストに指定できます。
INSERT ... SELECTリクエストに含まれるサブクエリーの一部として、ORDER BY句を指定することはできません。
INSERT操作に列名のリストが組み込まれている場合、column_nameの位置と、選択のexpressionリスト内での項目の位置とを一致させることにより、値が代入されます。
hash_by
HASH BY hash_list | RANDOM }
local_order_by
LOCAL ORDER BY local_order_by_spec [,...]
logging_errors
LOGGING [ ALL ] ERRORS [ WITH { NO LIMIT | LIMIT OF error_limit } ]
LOGGING ERRORSオプションを指定しない場合、システムはエラー処理を提供しません。エラーが発生した場合、次のセッション モードの動作が実行されます。
  • 現在のセッション モードがANSIである場合、エラーのあるリクエストはアボートし、ロールバックします。
  • 現在のセッション モードがTeradataである場合、エラーのあるトランザクションはアボートし、ロールバックします。
デッドロックなど、場合によってはエラーのあるトランザクションはロールバックします。
ALL: オプションのキーワードALLはデフォルトです。エラーをログに記録する場合は、すべてのエラーをログに記録する必要があります。
WITH NO LIMIT: このINSERT ... SELECTロード操作のターゲット データ テーブルに関連付けられているエラー テーブルに記録できるエラー数を制限しません。システム定義のエラー制限値である16,000,000個のエラーが記録されるまでエラーが記録されます。
WITH LIMIT OF error_limit: このINSERT ... SELECTロード操作のターゲット データ テーブルに関連付けられているエラー テーブルに記録できるエラーの制限値がerror_limitになります。
error_limitに指定できる値の範囲は、1~16,000,000です。LIMITオプションの値を指定しない場合、エラー制限値のデフォルト値は10です。
JSON_string
データのリテラル文字列をJSON形式で指定します。
JSON形式の入力を指定します。JSONオプションの使用上のルールを参照してください。
JSONデータの書式設定の詳細については、<Teradata Vantage™ - JSONデータ型、B035-1150>を参照してください。
?
パラメータ化SQLを指定します。
パラメータ化SQLの場合、INSERT JSONはVARCHAR、CLOB、および外部JSONデータ型をサポートします。ただし、操作は2 AMPプロセスです。最適なパフォーマンスを行なうには、JSONリテラルを指定します。
DEFAULT VALUES
デフォルト値で構成される行が、table_nameに追加されます。
列にDEFAULT句が定義されない場合、NOT NULLとして定義されていない限り、システムはデフォルトをNULLと見なして、エラーが返され、挿入が失敗します。
INSERTのこのオプションは、埋め込みSQLではサポートされていません。
hash_list
{ column_name | column_position | column_expression } [,...]
AMP間のNoPIテーブルにハッシュ行が挿入されます。
RANDOM
ランダムに一度に1ブロック、AMP間のNoPIテーブルにハッシュ行が挿入されます。
local_order_by_spec
{ column_name | column_position | column_expression }
  [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
順序行がAMPでローカルにテーブルに挿入されます。
error_limit