目次
pg_dump でエクスポートする場合、 -s
, -a
のオプションをつけることで挙動が多少変わる。 -s
, -a
オプションは次のような場合に使われる。
スキーマ・データを別にエクスポートする
スキーマ情報のみをエクスポートする
1 |
pg_dump DB_NAME -h HOSTNAME -t TABLE_NAME -U USER_NAME -s --file=OUTPUT_FILE_NAME |
別のデータベースに似たような構造を作りたい場合などに使える。
もし全てのテーブルのスキーマをエクスポートしたい場合は、 オプション -t TABLE_NAME
を除いて実行します。
データのみをエクスポートする
1 |
pg_dump DB_NAME -h HOSTNAME -t TABLE_NAME -U USER_NAME -a --file=OUTPUT_FILE_NAME |
コマンドは変更される可能性もあるので、最新のものは PostgreSQL のドキュメントで確認してください。
エクスポートしたものをインポートするには -f file_name
をつけて psql
を実行する。
1 |
psql DB_NAME -U user_name -W -f FILE_NAME |
私はこのコマンドを、カラムを追加する場合に使っている。
カラムの追加
PostgreSQL だと既存のカラムの最後にしかカラムを追加できない。 MySQL だと 特定のカラムの後ろに新しいカラムを追加することができる。
そこで私は次のようにして列を追加することがある。
テーブルスキーマとテーブルデータをエクスポートする。 (データとスキーマをまとめてエクスポートしてもいい。)
12pg_dump DBNAME -h HOSTNAME -t TABLENAME -U USERNAME -a --file=20130212_data.sqlpg_dump DBNAME -h HOSTNAME -t TABLENAME -U USERNAME -s --file=20130212_schema.sqlテーブルスキーマを変更する、テーブル削除のSQLを追加する
1vim 20130212_schema.sql念のためバックアップを取得する
1pg_dump DBNAME -h HOSTNAME -t TABLENAME -U USERNAME --file=20130212_backup.sqlテーブルを変更する
12psql DBNAME -h HOSTNAME -U USERNAME -f 20130212_schema.sqlpsql DBNAME -h HOSTNAME -U USERNAME -f 20130212_data.sql