16.20 - 例: PTIテーブルでのUSING INSERT - Teradata Vantage NewSQL Engine

Teradata Vantage™ 時系列テーブルおよび操作

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1208-162K-JPN

USINGは、次に示すようにクライアント システムからデータ行をインポートします。

USING INSERTのテーブルおよびデータ定義の例

例では、以下のインポート ファイルが使用されます。

JsonBuoy.dat:
{"TS":{"Arriving_timestamp" : "2017-01-06 10:32:12.122200","SeqNo" : 1,"BuoyId" : 777,"Temperature" : 55 },"Source_country": "USA"}|777
AvroBuoy1.dat:
7B2274797065223A227265636F7264222C226E616D65223A227265635F30222
C226669656C6473223A5B7B226E616D65223A225453222C2274797065223A7
B2274797065223A227265636F7264222C226E616D65223A227265635F31222
C226669656C6473223A5B7B226E616D65223A224172726976696E675F74696
D657374616D70222C2274797065223A22737472696E67227D2C7B226E616D6
5223A225365714E6F222C2274797065223A22696E74227D2C7B226E616D6522
3A2242756F794964222C2274797065223A22696E74227D2C7B226E616D65223
A2254656D7065726174757265222C2274797065223A22696E74227D5D7D7D2C7
B226E616D65223A22536F757263655F636F756E747279222C2274797065223A22
737472696E67227D5D7D0034323031372D30312D30362031303A33323A31322E
31323232303002920C6E06555341
AvroBuoy2.dat:
7B2274797065223A227265636F7264222C226E616D65223A227265635F30222
C226669656C6473223A5B7B226E616D65223A225453222C2274797065223A7
B2274797065223A227265636F7264222C226E616D65223A227265635F31222
C226669656C6473223A5B7B226E616D65223A224172726976696E675F74696
D657374616D70222C2274797065223A22737472696E67227D2C7B226E616D6
5223A225365714E6F222C2274797065223A22696E74227D2C7B226E616D65223
A2242756F794964222C2274797065223A22696E74227D2C7B226E616D65223
A2254656D7065726174757265222C2274797065223A22696E74227D5D7D7D2C7
B226E616D65223A22536F757263655F636F756E747279222C2274797065223
A22737472696E67227D5D7D0034323031372D30312D30362031303A33323A31
322E31323232303002920C6E06555341|777
RawBuoyNoSeq.dat:
2017-01-06 10:32:12.122200|111|55
RawBuoySeq.dat:
2017-01-06 10:32:12.122200|1|111|55
この例で使用するテーブルの定義は次のとおりです。シーケンス化PTIテーブルocean_buoy_seqには、以下が含まれます。
  • 1時間のタイムバケット、HOURS(1)。
  • 2016年1月1日として指定されたタイム ゼロ、DATE '2016-01-01'。
  • PRIMARY TIME INDEXのbuoyid列、COLUMNS(buoyid)。
CREATE TABLE ocean_buoy_seq 
     (
      TD_TIMEBUCKET BIGINT NOT NULL GENERATED SYSTEM TIMECOLUMN,
      TD_TIMECODE TIMESTAMP(6) NOT NULL GENERATED TIMECOLUMN,
      TD_SEQNO INT NOT NULL GENERATED TIMECOLUMN,
      buoyid INTEGER,
      temperature INTEGER)
PRIMARY TIME INDEX (TIMESTAMP(6), DATE '2016-01-01', HOURS(1), COLUMNS(buoyid), SEQUENCED(200));
この例で使用するテーブルの定義は次のとおりです。非シーケンス化PTIテーブルocean_buoy_no_seqには、以下が含まれます。
  • 1時間のタイムバケット、HOURS(1)。
  • 1970年1月1日として指定されたタイム ゼロ、DATE '1970-01-01'。
  • PRIMARY TIME INDEXのbuoyid列、COLUMNS(buoyid)。
CREATE SET TABLE ocean_buoy_no_seq 
     (
      TD_TIMEBUCKET BIGINT NOT NULL GENERATED SYSTEM TIMECOLUMN,
      TD_TIMECODE TIMESTAMP(6) NOT NULL GENERATED TIMECOLUMN,
      buoyid INTEGER,
      temperature INTEGER)
 PRIMARY TIME INDEX (TIMESTAMP(6), DATE '1970-01-01', HOURS(1), COLUMNS(buoyid), NONSEQUENCED);

例: 非シーケンス化テーブルへのUSING INSERTの実行

次のようなBTEQコマンドを使用して、生データ ファイルをインポートします。
.import vartext file = RawBuoyNoSeq.dat
INSERT文のUSINGリクエスト修飾子を次に示します。
USING (timecode varchar(50), buoyid varchar(10), temperature varchar(10))
INSERT INTO ocean_buoy_no_seq(td_timecode, buoyid, temperature)
VALUES (CAST(:timecode as TIMESTAMP(6)), :buoyid, :temperature);

ドット表記法を使用して、各insert列の値をJSONファイルから抽出できます。

次のようなBTEQコマンドを使用して、生データ ファイルをインポートします。
.import vartext file = JsonBuoy.dat
この文には、JSONファイルからocean_buoy_no_seqテーブルのTD_TIMECODE、buoyid、およびtemperature列に値を挿入するためのUSINGリクエスト修飾子が含まれています。
USING (RAWBUOY VARCHAR(500))
INSERT INTO ocean_buoy_no_seq(TD_TIMECODE, buoyid, temperature)
VALUES (CAST(CAST(:RAWBUOY AS JSON(500)).TS.Arriving_timestamp as TIMESTAMP(6)),
CAST(:RAWBUOY AS JSON(500)).TS.BuoyId,
CAST(:RAWBUOY AS JSON(500)).TS.Temperature);

ドット表記法を使用して、挿入する値を抽出する別の例を示します。

次のようなBTEQコマンドを使用して、生データ ファイルをインポートします。
.import vartext file = JsonBuoy.dat
この文には、JSONファイルからテーブルocean_buoy_no_seqのTD_TIMECODE、buoyid、およびtemperature列に値を挿入するためのUSINGリクエスト修飾子が含まれています。
USING (RAWBUOY VARCHAR(500), buoyid INT)
INSERT INTO ocean_buoy_no_seq(TD_TIMECODE, buoyid, temperature)
VALUES (CAST(CAST(:RAWBUOY AS JSON(500)).TS.Arriving_timestamp as TIMESTAMP(6)),:buoyid,
CAST(:RAWBUOY AS JSON(500)).TS.temperature);

ドット表記法を使用して、各insert列の値をAvroファイルから抽出できます。

次のようなBTEQコマンドを使用して、Avroデータ ファイルをインポートします。
.import vartext file = AvroBuoy1.dat
この文には、Avroファイルからテーブルocean_buoy_no_seqのTD_TIMECODE、buoyid、およびtemperature列に値を挿入するためのUSINGリクエスト修飾子が含まれています。
USING (RAWBUOY VARCHAR(5000))
INSERT INTO ocean_buoy_no_seq(TD_TIMECODE, buoyid, temperature)
VALUES (CAST(CAST(to_bytes(:RAWBUOY,translate('base16' using UNICODE_TO_LATIN)) as DATASET(500) STORAGE FORMAT AVRO).TS.Arriving_timestamp as TIMESTAMP(6)),
CAST(to_bytes(:RAWBUOY, translate('base16' using UNICODE_TO_LATIN)) as DATASET(500) STORAGE FORMAT AVRO).TS.BuoyId,
CAST(to_bytes(:RAWBUOY, translate('base16' using UNICODE_TO_LATIN)) as DATASET(500) STORAGE FORMAT AVRO).TS.Temperature);

ドット表記法を使用して、挿入する値をAvroファイルから抽出する別の例を示します。

次のようなBTEQコマンドを使用して、Avroデータ ファイルをインポートします。
.import vartext file = AvroBuoy2.dat
この文には、Avroファイルからテーブルocean_buoy_no_seqのTD_TIMECODE、buoyid、およびtemperature列に値を挿入するためのUSINGリクエスト修飾子が含まれています。
USING (RAWBUOY VARCHAR(5000), buoyId VARCHAR(10) )
INSERT INTO ocean_buoy_no_seq(TD_TIMECODE, buoyid, temperature)
VALUES (CAST(CAST(to_bytes(:RAWBUOY,translate('base16' USING UNICODE_TO_LATIN)) AS DATASET(500) STORAGE FORMAT AVRO).TS.Arriving_timestamp AS TIMESTAMP(6)),
:BuoyId,
CAST(to_bytes(:RAWBUOY, translate('base16' USING UNICODE_TO_LATIN)) AS DATASET(500) STORAGE FORMAT AVRO).TS.Temperature);

例: シーケンス化テーブルへのUSING INSERTの実行

この例では、insert操作用の生データ ファイルをインポートします。

次のようなBTEQコマンドを使用して、生データ ファイルをインポートします。
.import vartext file = RawBuoySeq.dat;
この文には、生データ ファイルからテーブルocean_buoy_seqのTD_TIMECODE、TD_SEQNO、buoyid、およびtemperature列に値を挿入するためのUSINGリクエスト修飾子が含まれています。
USING (timecode VARCHAR(50), seqno VARCHAR(10), buoyid VARCHAR(10), temperature VARCHAR(10))
INSERT INTO ocean_buoy_seq(TD_TIMECODE, TD_SEQNO, buoyid, temperature)
VALUES (CAST(:timecode AS TIMESTAMP(6)), :seqno, :buoyid, :temperature);

この例では、insert操作用のJSONデータ ファイルをインポートします。

次のようなBTEQコマンドを使用して、JSONデータ ファイルをインポートします。
.import vartext file = JsonBuoy.dat
USINGリクエスト修飾子を使用するこのINSERT文は、ドット表記法を使用して、各insert列の値をJSONデータ ファイルから抽出します。
USING (RAWBUOY VARCHAR(500))
INSERT INTO ocean_buoy_seq(TD_TIMECODE, TD_SEQNO, buoyid, temperature)
VALUES (CAST(CAST(:RAWBUOY AS JSON(500)).TS.Arriving_timestamp as TIMESTAMP(6)),
CAST(CAST(:RAWBUOY AS JSON(500)).TS.SeqNo AS INT),
CAST(:RAWBUOY AS JSON(500)).TS.BuoyId,
CAST(:RAWBUOY AS JSON(500)).TS.Temperature);
USINGリクエスト修飾子を使用するこのINSERT文は、ドット表記法を使用して、各insert列の値をAvroデータ ファイルから抽出します。
USING (RAWBUOY VARCHAR(5000))
INSERT INTO ocean_buoy_seq(TD_TIMECODE, TD_SEQNO, buoyid, temperature)
VALUES (CAST(CAST(to_bytes(:RAWBUOY,translate('base16' using UNICODE_TO_LATIN)) as DATASET(500) STORAGE FORMAT AVRO).TS.Arriving_timestamp as TIMESTAMP(6)),
CAST(to_bytes(:RAWBUOY,translate('base16' USING UNICODE_TO_LATIN)) as DATASET(500) STORAGE FORMAT AVRO).TS.SeqNo,
CAST(to_bytes(:RAWBUOY,translate('base16' USING UNICODE_TO_LATIN)) as DATASET(500) STORAGE FORMAT AVRO).TS.BuoyId,
CAST(to_bytes(:RAWBUOY,translate('base16' USING UNICODE_TO_LATIN)) as DATASET(500) STORAGE FORMAT AVRO).TS.Temperature);