JSONオプションの使用上のルール - 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
- JSONデータはテキスト形式でのみシュレッドできます。INSERT文を使用して、バイナリ形式のJSONデータ(BSONやUBJSONなど)をシュレッドすることはできません。
- シュレッドされたデータはVARCHAR形式であり、暗黙的なキャスティングを使用してVARCHARデータがターゲット テーブル列の形式に変換されます。VARCHARデータをターゲット列の形式にキャスティングできない場合、挿入は失敗します。例えば、ターゲット列がVARBYTEの場合にNULL以外の値をVARBYTEにキャスティングすると、JSONには一致するバイナリ データのテキスト値がないため、エラーが返されます。
- INSERT文は、JSON OBJECTをルートとして1行のJSONデータを処理します。つまり、JSONデータは、'{'を最初の非空白文字として開始します。INSERT文を使用して複数行のデータを挿入することはできません。
- INSERT文は、ターゲット テーブルがLDIテーブルの場合、ロード分離オプションをサポートします。
- ターゲット テーブルはビューではなくテーブルでなければなりません。
- 列名の照合では、大文字小文字は区別されません。
- 同じ列が複数回一致した場合、格納されるデータは最後の一致です。
- ターゲット テーブル列のいずれかがNOT NULLで、JSON入力データに列のデータが含まれない場合、次のルールが適用されます。
- ターゲット列にDEFAULT値がない場合は、エラーが返されます。
- ターゲット列にDEFAULT値があり、JSONデータが文字列リテラルである場合、DEFAULT値がターゲット テーブルに挿入されます。
- ターゲット列にDEFAULT値があり、INSERT JSONがパラメータ化SQLを使用している場合、DEFAULT値は無視され、エラーが返されます。この場合、パラメータ化SQLを使用するより、JSONリテラルを指定することをお勧めします。