はじめに

COPY_PARTITIONS_TO_TABLE関数を使用して、特定のパーティションを別のテーブルにコピーすることができます。
パーティションのコピーは、テーブルをコピーする”COPY_TABLE”と同じ動作であるため、非常に高速でコピーされます。

COPY_TABLEの動作に関しては下記を参照ください。

「既存のテーブルを高速にコピーする方法」
http://vertica-tech.ashisuto.co.jp/copy_table/

構文

COPY_PARTITIONS_TO_TABLE (
‘[[database.]schema.]source_table’,
‘min_range_value’,
‘max_range_value’,
‘[[database.]schema.]target_table’
[, ‘force_split’]
)
パラメータ説明
[[database.]schema.]source_tableソーステーブルを指定
min_range_valueコピー対象とするパーティションデータの下限を指定
max_range_valueコピー対象とするパーティションデータの上限を指定
[[database.]schema.]target_tableターゲットテーブルを指定
force_splitパーティションキーの範囲が複数のコンテナまたは単一のコンテナの一部にまたがる場合、ROSコンテナを分割するかどうかを指定します。

true :必要に応じてROSコンテナを分割します。
false:この操作を実行するためにROSコンテナを分割する必要がある場合、エラーを返します。
※デフォルトはfalse

・ソーステーブル:データの移行元テーブル
・ターゲットテーブル:データの移行先テーブル

使用例

任意の範囲のパーティションを、ソーステーブルからターゲットテーブルへコピーさせる一連の手順を以下にご案内します。


注意事項


権限について

COPY_PARTITIONS_TO_TABLEを実行するには、次の内いずれかの一つ条件を満たす必要があります。
・ソーステーブルの所有者かUSAGE権限が必要です。
・ターゲットテーブルを作成する場合は、CREATE権限が必要です。

テーブル属性の要件

ソーステーブルとターゲットテーブルの下記の属性は同じでなければいけません。
・NOT NULL制約を含む列定義
・セグメンテーションの有無
・パーティション句
・プロジェクション数
・プロジェクションのソート順
・主キーおよび一意キーの制約
※有効/無効の状態は問いません。
ただし、主キーまたは一意キーが有効になっているターゲットテーブルに対し、重複したパーティションキー列の値が挿入される場合、処理はロールバックされます。

テーブルの制限

以下のオブジェクトはソーステーブルあるいはターゲットテーブルとして使用できません。
・一時テーブル
・ビュー
・システムテーブル
・外部テーブル

検証バージョンについて

この記事の内容はVertica 9.3で確認しています。

更新履歴

2020/2/6 本記事を公開