「本番環境のテーブルデータを開発環境にも反映させて開発環境を最新の状態にしたい」等、ある環境のデータを別環境にもコピーしたい場合があります。このような場合、一旦CSVファイルとしてデータを出力して、開発環境に転送して、開発環境でロードして・・・という手順が考えられますが、Verticaでは特定テーブルのデータを別環境のテーブルに直接コピー(ロード)するCOPY FROM VERTICAという機能があります。
COPY_FROM_VERTICA
通常のCOPYコマンドではソースデータはCSVファイルを指定しますが、COPY FROM VERTICAでは、別環境のテーブルデータをソースデータとすることができます。

以下に具体的な手順を記載します。

事前準備

事前に以下の作業を実施しておいてください。
なお、本記事では本番環境のtable1テーブルのデータを、開発環境のtable1_devテーブルにコピーする方法を例として説明します。

・開発環境に本番環境のtable1テーブルと同じテーブル定義のtable1_devテーブルを作成しておきます。
テーブル定義の確認方法はオブジェクトの定義をエクスポートする方法を参考にしてください。
※本例では、どちらのテーブルか区別しやすくするために異なるテーブル名を使用していますが、コピー元、コピー先のテーブル名が同じでも問題ありません。

・table1_devにすでにデータが存在する場合は、TRUNCATE等でデータを全件削除しておいてください。
削除しない場合は、既存データに追記でコピーデータがロードされる形となります。

接続の確立

COPY FROM VERTICAコマンドを実行する前に、以下を実行して開発環境から本番環境への接続を確立します。


例)本番環境のデータベース名がtest、接続ユーザ名がdbadmin、ホスト名がkkasrv、ポート番号が5433(デフォルト)の場合

正常に接続できた場合は「CONNECT」と出力されます。

COPY FROM VERTICAの実行

接続が確立できたらCOPY FROM VERTICAコマンドを実行し、本番環境のtable1テーブルのデータを、開発環境のtable1_devテーブルにコピーします。

※WHERE句等でソース元のデータを絞り込むことはできません。指定したテーブルの全データがコピーされます。

例)


検証バージョンについて

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

更新履歴

2019/03/18 検証バージョンを9.2に変更
2015/10/29 本記事を公開