はじめに

環境の再構築やデータの移行など、既存環境のデータを移行したいケースは多々あるかと思います。
この記事では、既存環境のテーブルのDDLやテーブルのデータを一括で抽出する方法をご紹介します。


手順の流れ

以下の様な手順で必要なデータを移行元環境から抽出します。

1.テーブルのDDL
2.テーブル一覧
3.データ


DDLの抽出

初めに、対象データベースからテーブルのDDLを全て抽出します。
以下の記事でもご紹介している手順で実行します。

【参考】
Verticaのオブジェクト定義をエクスポートする方法
http://vertica-tech.ashisuto.co.jp/ddl_export/


DDL抽出時にsedコマンドを組み合わせることで、ヘッダを削除してファイルに出力できます。
ここまでの手順でDDLの抽出が完了します。


テーブル情報の抽出

次に、テーブル名の一覧を抽出します。
次の手順でデータの出力処理を一括で実行するために、必要なテーブル名の一覧を抽出します。


egrepやawkを組み合わせて不要な出力を除外して整形します。


データの抽出

データの抽出には、以下の記事でご紹介した手順を利用します。

SELECT結果をCSV出力する方法
http://vertica-tech.ashisuto.co.jp/csv-output/


テーブル名の一覧を順に読み込んで、対象テーブルのデータをCSVに出力します。

なお、格納されているデータによっては、正しく区切られなかったりするケースがあります。
そのような場合にはロード時にエラーが発生することが考えられます。
適宜、出力フォーマットを変更して動作をご確認ください。


件数確認

最後に、移行作業実施後に全てのデータが移行できたか確認するために、全てのテーブルの件数を控えておきます。




まとめ

今回ご紹介した手順で抽出したDDLやデータがあれば、他の環境にデータを移行したり環境再構築時のバックアップデータとしても活用することができます。ぜひ参考にしてください。


参考記事

CSVデータのロード方法
http://vertica-tech.ashisuto.co.jp/load-csv/

データロードの基本
http://vertica-tech.ashisuto.co.jp/dataload_overview/

COPYコマンドでCSVの特定の列をロード対象外とする方法
http://vertica-tech.ashisuto.co.jp/copy_filler/

COPYでロードに成功/失敗した件数を確認する方法
http://vertica-tech.ashisuto.co.jp/copy_accept_reject_rows/

データロードのまとめ記事
http://vertica-tech.ashisuto.co.jp/load-summary/



検証バージョンについて

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