はじめに

EXPORT TO VERTICA文を使って、異なるクラスタ間でテーブルのデータをエクスポート/インポートできます。
vbr(Verticaのバックアップリカバリツール)によってクラスタごとコピーする方法とは違い、ノード台数が異なっても実施できるため、サーバ構成の異なる環境同士でテーブルのデータをコピーしたい場合に便利です。

※イメージ図

構文

パラメータ説明
databaseエクスポートしたデータを受け取るデータベース名。
[schema.]target‑tableエクスポートしたデータを受け取るテーブル。
このテーブルはすでに存在している必要があります。
target‑columnエクスポートされたデータを格納する列のリスト。
query‑expressionエクスポートするデータを呼び出すクエリを指定します。
[schema.]source‑tableエクスポート元のデータを含むテーブル。
source‑columnソーステーブルからエクスポートする列のリスト。
指定した場合、これらの列のみをエクスポートします。

使用例

1.単一ノードから単一ノード

①ソース/ターゲットテーブルの確認
・ソーステーブル

・ターゲットテーブル

②エクスポート用アドレスの確認
node_addressがクラスタノード間の通信に、export_addressが他のクラスタにエクスポートするための通信に使用されるIPアドレスです。
export_addressが、エクスポートを行うクラスタ同士が通信可能なIPアドレスとなっていることを確認します。

③ターゲットクラスタのデータベースへ接続

④EXPORT TO VERTICAの実行

⑤ターゲットテーブルを確認

2.複数ノードから単一ノード

通常Verticaでは、クラスタを複数ノード構成にする場合、ネットワークはパブリックIPとプライベートIPの2系統で管理します。
複数ノード構成のVerticaからEXPORT TO VERTICAを実行する際には、エクスポート用のアドレスをクラスタ同時が通信可能なIPアドレスに設定する必要があります。
そのため、もしエクスポートアドレスがターゲットクラスタから通信の取れないIPアドレスとなっている場合は、以下の手順を実施します。

パブリックIP…アプリケーション等、外部との通信に使用する。
プライベートIP…ノード間通信に使用する。

※ターゲットクラスタも複数ノード構成の場合は、「①」~「②」をターゲットクラスタでも実施します。
①エクスポート用アドレスの確認
ここではexport_addressにプライベートIPに当たるものが設定されているため、外部と通信可能なIPアドレスを割り当てる設定をします。

②ネットワークインターフェース作成

③作成したインターフェースをエクスポートアドレスに設定

④エクスポート用アドレスの確認
export_addressの設定が変更されていることを確認します。

⑤EXPORT TO VERTICAの実行

⑥ターゲットテーブルを確認

注意事項

エクスポート先にテーブルは事前に存在している必要があります。
特定のオブジェクトを異なる環境で作成したい時に便利な関数を以下の記事でご紹介しています。

オブジェクト定義をエクスポートする方法(EXPORT_CATALOG関数)
http://vertica-tech.ashisuto.co.jp/export_catalog/

参考情報

EXPORT TO VERTICA
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/EXPORTTOVERTICA.htm

Exporting Data to Another Vertica Database
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/EXPORTTOVERTICA.htm

CONNECT
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/CONNECT.htm

検証バージョンについて

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

更新履歴

2019/09/02 本記事を公開