LoginSignup
0
1

More than 5 years have passed since last update.

【Vertica】DDL抽出方法

Last updated at Posted at 2017-10-19

概要

現状のVerticaの環境に適応されているDDLがわからなくなってしまったが、Verticaから直接DDLを抽出する方法があったのでメモ。

コマンド

$ vsql -U {ユーザ名} (-w {パスワード}) -h {ホスト名(IP等)} -c "select export_tables('','{対象のデータベース名}');"  | sed -e '1,2d' | grep -v " row" > {任意のディレクトリ}/{任意のファイル名}.sql

※(-w {パスワード})は任意です。history等に残るのでコマンドで指定しない方が良いと思いますが。
指定していない場合は、パスワードを聞かれるので入力すればOKです

解説

  • export_tables: 定義をエクスポートする関数
    • ('{出力先}','{対象のデータベース名}'): 指定したデータベースのテーブルのDDLを指定した出力先へ抽出する。
      • データベース名を指定しない場合は、-Uで指定したユーザがアクセス権をもつ全定義をエクスポートします。
      • データベースの指定はカンマ区切りで複数行うことも可能です。('','{対象のデータベース名_1},{対象のデータベース名_2}・・・')
      • 出力先を指定しない場合は標準出力される(指定できるのはスーパーユーザのみ)
        • ※今回は標準出力されたものをDDLとして抽出する為指定していない
    • export_tables関数について詳しくはこちらをご覧ください。
  • sedコマンド
    • -e: 指定したスクリプト(条件式)で変換処理を行う
      • ※オプションはなくても大丈夫でした。
    • '1,2d': 1行目と2行目を削除する
      • 無駄な1~2行目を削除しています。別に削除しなくても良いですが、下記のようにファイルサイズが変わるほど邪魔なので、ここで消しておきましょう

381K sample_processed_data.sql
1.2M sample_raw_data.sql
```

  • grepコマンド
    • -v: マッチしない行を検索結果として表示する
    • " row": 最終行の(1 row)みたいな無駄な行を削除している

参考記事

Verticaで既存環境のテーブルのDDLとデータを一括で抽出する方法
※若干のオプションの指定ミスがありました

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1