OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

特定テーブルのデータを別環境のVerticaに直接コピーする方法

公開日:
更新日:
基本操作
#データ抽出

「本番環境のテーブルデータを開発環境にも反映させて開発環境を最新の状態にしたい」等、ある環境のデータを別環境にもコピーしたい場合があります。このような場合、一旦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コマンドを実行する前に、以下を実行して開発環境から本番環境への接続を確立します。

dbadmin=> CONNECT TO VERTICA データベース名 USER 接続ユーザ名 PASSWORD 'パスワード' ON '接続先のホスト名',ポート番号;

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

#開発環境で実行
dbadmin=> CONNECT TO VERTICA test USER dbadmin PASSWORD '******' ON 'kkasrv',5433;
CONNECT

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

COPY FROM VERTICAの実行

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

dbadmin=> COPY コピー先のテーブル名 FROM  VERTICA コピー元のデータベース名.スキーマ名.テーブル名 DIRECT;

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

例)

#本番環境で実行
本番環境のtable1にデータが1件存在することを確認
dbadmin=> SELECT * FROM table1;
 col1 | col2
------+------
    1 | 10
(1 row)

#開発環境で実行
開発環境のtable1_devはデータが0件であることを確認
dbadmin=> SELECT * FROM table1_dev;
 col1 | col2
------+------
(0 rows)

#開発環境で実行
本番環境のtable1テーブルのデータを開発環境のtable1_devテーブルにコピー
dbadmin=> COPY table1_dev FROM VERTICA test.public.table1 DIRECT;
 Rows Loaded
-------------
           1
(1 row)

#開発環境で実行
開発環境のtable1_devテーブルに、本番環境のtable1テーブルのデータがコピーされたことを確認
dbadmin=> SELECT * FROM table1_dev;
 col1 | col20
------+-------
    1 |    10
(1 row)

検証バージョンについて

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

更新履歴

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