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);