スキーマ単位でDDL取得
pg_dump -h vm022 -d myposdb -U postgres --schema=sooni --schema-only --encoding UTF8 --file=schema_sooni_ddl_utf8.sql
オプション解説
- -h ホスト名
- -d データベース名
- -U データベース接続ユーザ
- –shema = 対象スキーマ名
- –schema-only データ定義(DDL)のみという意味(もともとpg_dumpはバックアップをを目的にしているので、このオプションをつける事で「データが除外」される。
- –encoding UTF8 バックアップファイルのエンコーディングを指定
- –file= ファイル名 出力ファイル名
テーブルDDLをスキーマで絞って取得
pg_dump -h vm022 -d myposdb -U postgres -t "sooni.*" --schema-only --encoding UTF8 --file=sooni_tables_ddl_utf8.sql
オプション解説
- -t “sooni.*” -tでテーブルを示すので、sooniスキーマ配下全てのテーブルという意味
–section を指定した取得
本当はインデックス用のみDDLとか、トリガーのみとか、ストアドファンクションのみとかに絞りたいのですが、それはできないようです。以下実質2パターンをうまく利用するしかないようです。
–section=(data/pre-data/post-data)の3種類が指定できます。
pg_dump -h vm022 -d myposdb -U postgres --schema=sooni --section=pre-data --file=sooni_pre_ddl.sql
pg_dump -h vm022 -d myposdb -U postgres --schema=sooni --section=post-data --file=sooni_post_ddl.sql
オプション解説
- –section=data テーブルデータ、ラージオブジェクト、シーケンス値など「実際の値」を意味するのでDDL取得目的の場合は使用しない。
- –section=post-data インデックス用DDL、トリガー用DDL、ルール用DDL、制約用DDLが対象になります。
- –section=pre-data 上記以外全てのDDLが対象