JSONデータのインポートとエクスポート - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年9月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/gzn1554761068186.ditamap
dita:ditavalPath
ja-JP/gzn1554761068186.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage

ストレージ形式に関係なく、VantageからインポートまたはエクスポートするJSONデータのデフォルトのフォーマットは、CLOB(文字)ベースです。定義済み変換グループを使用して、オブジェクトをBLOB、VARCHAR、およびVARBYTEに変換することもできます。BLOBまたはVARBYTEとの間の変換は、BSON形式です。変換グループの詳細については、JSON型の変換グループを参照してください。

コンストラクタ/インスタンス メソッドまたはキャスト機能を使用すると、BSON形式でデータベースにデータをインポートまたはデータベースからデータをエクスポートすることもできます。BSONデータのインポートまたはエクスポートには、JSON型のコンストラクタ/インスタンス メソッドまたはキャスト機能を使用できるインポート/エクスポート ユーティリティを使用できます。

データは、UBJSON形式でデータベースからインポートすることもUBJSON形式でデータベースにエクスポートすることもできません。

BSON形式のJSONデータのインポートとエクスポート

BSON形式のJSONデータをインポートするには、次のいずれかを使用します。
  • BLOBまたはVARBYTEをJSONデータに変換する変換グループ
  • JSONデータへのCAST BYTE、VARBYTE、またはBLOB式
  • BYTE、VARBYTE、またはBLOBデータを使用するNEW JSONコンストラクタ メソッド
BSON形式のJSONデータをエクスポートするには、次のいずれかを使用します。
  • 任意の形式のJSONデータをBLOBまたはVARBYTEに変換する変換グループ
  • BYTE、VARBYTE、またはBLOBに任意の形式でJSONデータをキャストするCAST式
  • 任意の形式のJSONデータで使用するAsBSONメソッド

BSONの場合、数値型は常にリトル エンディアン形式トでシリアル化されます。BSON形式でデータベースにインポートまたはデータベースからエクスポートするデータは、リトル エンディアン形式であることが想定されます。Vantageは、BSONデータをエクスポートするときに、確実に数値型をリトル エンディアン形式でシリアル化します。

BSON形式でデータベースにデータをインポートする場合は、すべての数値型データがリトル エンディアン形式である必要があります。データベースは不適切にシリアル化された数値型データを検出できないので、データが破損して数値型のシリアル化に失敗します。

JSONテキスト形式でデータベースにデータをインポートすると、数値型は相当する文字によって表わされます。例えば、数値1は、UNICODEでは'U + 0031'という文字で表わされます。したがって、Vantageはテキスト形式で表わされた数値型を相当するBSONに変換するときに、確実にこの数値型をリトル エンディアン形式でシリアル化します。

また、BSON形式で格納されたJSONデータをテキストとしてエクスポートすると、Vantageは確実にリトルエンディアンでシリアル化された数値を相当するテキストに適切に変換します。

UBJSON形式とテキスト形式の数値型の変換

UBJSONの場合、数値型は常にリトル エンディアン形式でVantageにシリアル化されます。

JSONテキスト形式でデータベースにデータをインポートすると、数値型は相当する文字によって表わされます。例えば、数値1は、UNICODEでは'U + 0031'という文字で表わされます。したがって、Vantageはテキスト形式で表わされた数値型を相当するUBJSONに変換するときに、確実にこの数値型をリトル エンディアン形式でシリアル化します。

また、UBJSON形式で格納されたJSONデータをテキストとしてエクスポートすると、Vantageは確実にリトルエンディアンでシリアル化された数値を相当するテキストに適切に変換します。

文字列のエンコーディング

BSONとUBJSONは両方とも、UTF8文字セットに文字列をエンコードします。ただし、UTF8はVantage内の文字セットとしてサポートされていません。JSONテキスト形式でデータベースにデータをインポートして、いずれかのバイナリ格納形式で格納する場合、変換はストレージ形式の変換で説明しているように実行されます。

すべての文字列データは、ソース データ(LATINまたはUNICODE)から相当するUTF8に変換されます。エラーが発生して操作に失敗します。エラーは無視できません。

同様に、BSONまたはUBJSONとして格納されたデータをJSONテキストとしてエクスポートすると、UTF8でエンコードされたすべての文字列は該当する文字セット(LATINまたは UNICODE)に変換され、エラーが発生して操作に失敗します。

バイナリ格納形式のいずれかで格納されたデータが文字変換エラーのため、JSONテキストとしてエクスポートできない場合は、インスタンス メソッドのいずれかまたはJSON型のキャストを使用してBSONとしてエクスポートできます。