例: BTEQを介したAvroオブジェクト コンテナ ファイルのBLOBとしてのTeradata Databaseへのロード - Teradata Database - Teradata Vantage NewSQL Engine - Avroオブジェクト コンテナ ファイルのロードの例

Teradata Vantage™ DATASETデータ型

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/pgs1512082344257.ditamap
dita:ditavalPath
ja-JP/pgs1512082344257.ditaval
dita:id
B035-1198
Product Category
Software
Teradata Vantage

以下の例は、BTEQを使って、Avroオブジェクト コンテナをTeradata DatabaseにBLOBとしてロードする方法を示します。 ロード後、AvroContainerSplitテーブル演算子を使用して、DATASET STORAGE FORMAT AVRO型列のあるテーブルにAvro値を抽出できます。

この例では、3つのオブジェクト コンテナ ファイルがロードされます。

  1. BTEQ用の2つのフィールドを持つ、avro_containers.txtというインポート ファイルを作成します。最初のフィールドはコンテナID、2つ目のフィールドは、Object Containerファイルを含んだファイルの名前です。
    コンテナIDはINTEGER列にロードされ、ファイルは"BLOB as deferred by name"としてBLOBにロードされます。インポート ファイルの内容は可変テキスト形式です。
    1|avro_1.db
    2|avro_2.db
    3|avro_3.db
  2. BLOBデータをインポートするための、BLOB列を含んだテーブルを作成します。
    CREATE TABLE avro_containers(container_id INTEGER, container BLOB);
  3. テーブルとオブジェクト コンテナ ファイルをBTEQからロードします。
    .import vartext file avro_containers.txt
    
    .repeat *  
    USING (c1 VARCHAR(20), c2 BLOB AS DEFERRED BY NAME) INSERT INTO avro_containers(:c1, :c2);
  4. Avro値を保持するテーブルを作成します。
    CREATE TABLE avro_table(container_id INTEGER, avro_obj_id INTEGER, avro DATASET STORAGE FORMAT AVRO);
  5. AvroContainerSplitテーブル演算子を使って、各コンテナからAvro値を抽出します。
    INSERT INTO avro_table
    SELECT T.out_container_id, T.avro_object_id, T.avro_value FROM AvroContainerSplit
        (ON (SELECT container_id, container FROM avro_containers)) T;

    3つすべてのコンテナ ファイルのAvro値がavro_tableテーブルにロードされ、コンテナIDおよび各コンテナID内のAvroオブジェクトIDで編成されます。

  6. JSON形式の最初の2つのAvroオブジェクトを最初のコンテナから選択します。
    SELECT container_id, avro_obj_id, avro.tojson() FROM avro_table WHERE container_id = 1 AND
        avro_obj_id < 2
    ORDER BY 1,2;