はじめに
テーブルにカラムを追加した際に、スーパープロジェクションには必ずカラムが追加されます。しかし、クエリスペシフィックプロジェクションには、オプションを付けなければ、カラムは追加されません。
以下に、プロジェクションにカラムを追加する方法をご紹介します。
構文
[テーブルにカラムを追加する構文]オプションを指定して、プロジェクションにカラムを追加できます。
ALTER TABLE <テーブル名> ADD COLUMN <カラム名> <データ型> ・・・
[PROJECTIONS (プロジェクション名,プロジェクション名,・・・) | ALL PROJECTIONS];
[PROJECTIONS (プロジェクション名,プロジェクション名,・・・) | ALL PROJECTIONS];
[オプション]
オプション名 | 概要 |
---|---|
PROJECTIONS | 列を追加したいプロジェクション名を指定します。(複数指定可) 列を追加しないプロジェクションがある場合は、このオプションを選択します。 |
ALL PROJECTIONS | 全てのプロジェクションに列を追加する場合は、このオプションを選択します。 |
実行例
特定のプロジェクションにカラムを追加する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
/* テーブルのカラムを確認 */ dbadmin=> \d tbl1 List of Fields by Tables Schema | Table | Column | Type | Size | Default | Not Null | Primary Key | Foreign Key --------+-------+--------+------+------+---------+----------+-------------+------------- public | tbl1 | col1 | int | 8 | | f | f | public | tbl1 | col2 | int | 8 | | f | f | public | tbl1 | col3 | int | 8 | | f | f | (3 rows) /* プロジェクションとカラムを確認 */ dbadmin=> select table_name,projection_name,projection_column_name,data_type from projection_columns where table_name = 'tbl1' order by projection_name,table_column_id; table_name | projection_name | projection_column_name | data_type ------------+-----------------+------------------------+----------- tbl1 | tbl1_qsp1 | col1 | int tbl1 | tbl1_qsp1 | col2 | int tbl1 | tbl1_qsp2 | col1 | int tbl1 | tbl1_qsp2 | col3 | int tbl1 | tbl1_qsp3 | col3 | int tbl1 | tbl1_super | col1 | int tbl1 | tbl1_super | col2 | int tbl1 | tbl1_super | col3 | int (8 rows) ※"tbl1_super"は、スーパープロジェクション ※"tbl1_super"以外は、クエリスペシフィックプロジェクション /* tbl1にカラム"col4"を追加する際に、特定のプロジェクションにカラムを追加 */ dbadmin=> alter table tbl1 add column col4 varchar(20) projections (tbl1_qsp1,tbl1_qsp2); ALTER TABLE /* 指定したプロジェクションにカラムが追加されていることを確認 */ dbadmin=> select table_name,projection_name,projection_column_name,data_type from projection_columns where table_name = 'tbl1' order by projection_name,table_column_id; table_name | projection_name | projection_column_name | data_type ------------+-----------------+------------------------+------------- tbl1 | tbl1_qsp1 | col1 | int tbl1 | tbl1_qsp1 | col2 | int tbl1 | tbl1_qsp1 | col4 | varchar(20) ★"tbl1_qsp1"にカラムが追加されています。 tbl1 | tbl1_qsp2 | col1 | int tbl1 | tbl1_qsp2 | col3 | int tbl1 | tbl1_qsp2 | col4 | varchar(20) ★"tbl1_qsp2"にカラムが追加されています。 tbl1 | tbl1_qsp3 | col3 | int tbl1 | tbl1_super | col1 | int tbl1 | tbl1_super | col2 | int tbl1 | tbl1_super | col3 | int tbl1 | tbl1_super | col4 | varchar(20) ★"tbl1_super"にカラムが追加されています。 (11 rows) |
テーブルの全てのプロジェクションにカラムを追加する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/* tbl1にカラム"col5"を追加する際に、全てのプロジェクションにカラムを追加 */ dbadmin=> alter table tbl1 add column col5 varchar(30) all projections; ALTER TABLE /* 全てのプロジェクションにカラムが追加されていることを確認 */ dbadmin=> select table_name,projection_name,projection_column_name,data_type from projection_columns where table_name = 'tbl1' order by projection_name,table_column_id; table_name | projection_name | projection_column_name | data_type ------------+-----------------+------------------------+------------- tbl1 | tbl1_qsp1 | col1 | int tbl1 | tbl1_qsp1 | col2 | int tbl1 | tbl1_qsp1 | col4 | varchar(20) tbl1 | tbl1_qsp1 | col5 | varchar(30) ★"tbl1_qsp1"にカラムが追加されています。 tbl1 | tbl1_qsp2 | col1 | int tbl1 | tbl1_qsp2 | col3 | int tbl1 | tbl1_qsp2 | col4 | varchar(20) tbl1 | tbl1_qsp2 | col5 | varchar(30) ★"tbl1_qsp2"にカラムが追加されています。 tbl1 | tbl1_qsp3 | col3 | int tbl1 | tbl1_qsp3 | col5 | varchar(30) ★"tbl1_qsp3"にカラムが追加されています。 tbl1 | tbl1_super | col1 | int tbl1 | tbl1_super | col2 | int tbl1 | tbl1_super | col3 | int tbl1 | tbl1_super | col4 | varchar(20) tbl1 | tbl1_super | col5 | varchar(30) ★"tbl1_super"にカラムが追加されています。 (15 rows) |
注意事項
・Live Aggregate Projectionに列を追加することはできません。・ALTER TABLE文の”ALL PROJECTIONS”はVertica9.2.1から使用可能です。
・追加したカラムをプロジェクションのセグメントキーやOrder byに含める場合は、プロジェクションの再作成を行ってください。
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。更新履歴
2019/12/26 カテゴリを修正2019/09/18 本記事を公開