はじめに
Vertica8.1からFlex Tableの新機能として、ロードした結果をCREATE TABLE AS SELECTで複製できるようになりました。この記事ではこの拡張機能の利用手順をご紹介します。
<参考記事>
JSONデータをVerticaのテーブルにロードする方法(Flex Table 基本編)
http://vertica-tech.ashisuto.co.jp/flex_table_data_road/
Flex TableをCREATE TABLE AS SELECTする手順
以下の構文でFlex Tableを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
dbadmin=> CREATE FLEX TABLE mountains(); CREATE TABLE dbadmin=> \d List of tables Schema | Name | Kind | Owner | Comment --------+---------------------------------------+-------+---------+--------- public | mountains | table | dbadmin | ★ public | mountains_keys | table | dbadmin | ★ (2 rows) ★印が新規に作成されたテーブルです。 |
ロード対象のJSONファイルを確認します。
1 2 3 4 5 6 |
$ cat /home/dbadmin/data/flex/mountains.json {"name": "Everest", "type":"mountain", "height":29029, "hike_safety": 34.1} {"name": "Mt St Helens", "type":"volcano", "height":29029, "hike_safety": 15.4} {"name": "Denali", "type":"mountain", "height":17000, "hike_safety": 12.2} {"name": "Kilimanjaro", "type":"mountain", "height":14000 } {"name": "Mt Washington", "type":"mountain", "hike_safety": 50.6} |
JSONデータをロードします。
1 2 3 4 5 |
dbadmin=> COPY mountains from '/home/dbadmin/data/flex/mountains.json' parser fjsonparser(); Rows Loaded ------------- 5 (1 row) |
ロードデータを確認します。
1 2 3 4 5 6 7 8 9 |
dbadmin=> SELECT name, type, height, hike_safety FROM mountains; name | type | height | hike_safety ---------------+----------+--------+------------- Everest | mountain | 29029 | 34.1 Mt St Helens | volcano | 29029 | 15.4 Denali | mountain | 17000 | 12.2 Kilimanjaro | mountain | 14000 | Mt Washington | mountain | | 50.6 (5 rows) |
CREATE TABLE AS SELECTで他のテーブルにデータを複製します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
dbadmin=> create table mountains_full as select "name"::varchar, "type"::varchar, "height"::int, "hike_safety"::varchar FROM mount ains; CREATE TABLE dbadmin=> \d List of tables Schema | Name | Kind | Owner | Comment --------+---------------------------------------+-------+---------+--------- public | mountains | table | dbadmin | public | mountains_full | table | dbadmin | ★ public | mountains_keys | table | dbadmin | (3 rows) ★印が新規に作成されたテーブルです。 |
新規作成したmountains_fullテーブルに対して検索を行います。
通常のSQL文でデータを検索できることを確認できました。
1 2 3 4 5 6 7 8 9 |
dbadmin=> select * from mountains_full; name | type | height | hike_safety ---------------+----------+--------+------------- Everest | mountain | 29029 | 34.1 Mt St Helens | volcano | 29029 | 15.4 Denali | mountain | 17000 | 12.2 Kilimanjaro | mountain | 14000 | Mt Washington | mountain | | 50.6 (5 rows) |
サポート対象外のSQL
2017年6月時点で、Flex Tbaleでは以下のSQLがサポートされておりません。ご注意ください。・CREATE TABLE flex_table LIKE…
・SELECT INTO
・UPDATE
・MERGE
参考情報
Creating Flex Tableshttps://my.vertica.com/docs/8.1.x/HTML/index.htm#Authoring/FlexTables/CreatingFlexTables.htm
※「Creating Columnar Tables from Flex Tables」パートをご参照ください。
検証バージョンについて
この記事の内容はVertica 8.1で確認しています。- 投稿タグ
- 新機能, Flex Table