ストレージ形式に関係なく、Teradata DatabaseにインポートまたはTeradata DatabaseからエクスポートするJSONデータのデフォルトのフォーマットは、CLOB(文字)ベースです。 定義済み変換グループを使用して、オブジェクトをBLOB、VARCHAR、およびVARBYTEに変換することもできます。 BLOBまたはVARBYTEとの間の変換は、BSON形式です。 変換グループの詳細について、複数の変換グループのサポートを参照してください。
コンストラクタ/インスタンス メソッドまたはキャスト機能を使用すると、BSON形式でデータベースにデータをインポートまたはデータベースからデータをエクスポートすることもできます。BSONデータのインポートまたはエクスポートには、JSON型のコンストラクタ/インスタンス メソッドまたはキャスト機能を使用できるインポート/エクスポート ユーティリティを使用できます。
BSON形式のJSONデータのインポートとエクスポート
- BLOBまたはVARBYTEをJSONデータに変換する変換グループ
- JSONデータへのCAST BYTE、VARBYTE、またはBLOB式
- BYTE、VARBYTE、またはBLOBデータを使用するNEW JSONコンストラクタ メソッド
- 任意の形式のJSONデータをBLOBまたはVARBYTEに変換する変換グループ
- BYTE、VARBYTE、またはBLOBに任意の形式でJSONデータをキャストするCAST式
- 任意の形式のJSONデータで使用するAsBSONメソッド
BSONの場合、数値型は常にリトル エンディアン形式トでシリアル化されます。BSON形式でデータベースにインポートまたはデータベースからエクスポートするデータは、リトル エンディアン形式であることが想定されます。Teradata Databaseは、BSONデータをエクスポートするときに、確実に数値型をリトル エンディアン形式でシリアル化します。
BSON形式でデータベースにデータをインポートする場合は、すべての数値型データがリトル エンディアン形式である必要があります。データベースは不適切にシリアル化された数値型データを検出できないので、データが破損して数値型のシリアル化に失敗します。
JSONテキスト形式でデータベースにデータをインポートすると、数値型は相当する文字によって表わされます。例えば、数値1は、UNICODEでは'U + 0031'という文字で表わされます。したがって、Teradata Databaseはテキスト形式で表わされた数値型を相当するBSONに変換するときに、確実にこの数値型をリトル エンディアン形式でシリアル化します。
また、BSON形式で格納されたJSONデータをテキストとしてエクスポートすると、Teradata Databaseは確実にリトルエンディアンでシリアル化された数値を相当するテキストに適切に変換します。
UBJSON形式とテキスト形式の数値型の変換
UBJSONの場合、数値型は常にリトル エンディアン形式でTeradata Databaseにシリアル化されます。
JSONテキスト形式でデータベースにデータをインポートすると、数値型は相当する文字によって表わされます。例えば、数値1は、UNICODEでは'U + 0031'という文字で表わされます。したがって、Teradataはテキスト形式で表わされた数値型を相当するUBJSONに変換するときに、確実にこの数値型をリトル エンディアン形式でシリアル化します。
また、UBJSON形式で格納されたJSONデータをテキストとしてエクスポートすると、Teradata Databaseは確実にリトルエンディアンでシリアル化された数値を相当するテキストに適切に変換します。
文字列のエンコーディング
BSONとUBJSONは両方とも、UTF8文字セットに文字列をエンコードします。ただし、UTF8はTeradata Database内の文字セットとしてサポートされていません。JSONテキスト形式でデータベースにデータをインポートして、いずれかのバイナリ格納形式で格納する場合、変換はストレージ形式の変換で説明しているように実行されます。
すべての文字列データは、ソース データ(LATINまたはUNICODE)から相当するUTF8に変換されます。エラーが発生して操作に失敗します。エラーは無視できません。
同様に、BSONまたはUBJSONとして格納されたデータをJSONテキストとしてエクスポートすると、UTF8でエンコードされたすべての文字列は該当する文字セット(LATINまたは UNICODE)に変換され、エラーが発生して操作に失敗します。
バイナリ格納形式のいずれかで格納されたデータが文字変換エラーのため、JSONテキストとしてエクスポートできない場合は、インスタンス メソッドのいずれかまたはJSON型のキャストを使用してBSONとしてエクスポートできます。