pg_dump でエクスポートする場合、 -s , -a のオプションをつけることで挙動が多少変わる。

スキーマ情報のみを出力する場合

$ pg_dump DB_NAME -h HOSTNAME -t TABLE_NAME -U USER_NAME -s --file=OUTPUT_FILE_NAME

データのみをエクスポートする場合

$ pg_dump DB_NAME -h HOSTNAME -t TABLE_NAME -U USER_NAME -a --file=OUTPUT_FILE_NAME

別のデータベースに似たような構造を作りたい場合などに使える。

(コマンドは変更される可能性もあるので、postgresql のドキュメントを確認するのをおすすめします。)

エクスポートしたものを実行するには `-f file_name` をつけて psql を実行する。`psql DB_NAME -U user_name -W -f FILE_NAME` のように。

列追加

列を追加する場合は次のようにしている。postgresだと既存の列の最後にしか列を追加できないみたいで。

テーブルスキーマとテーブルデータをエクスポートする。(別のファイルにしてやっているが、データとスキーマをまとめてエクスポートしてもOK。っていうかそのほうがいいと思う。)

$ pg_dump DBNAME -h HOSTNAME -t TABLENAME -U USERNAME -a --file=20130212_data.sql
$ pg_dump DBNAME -h HOSTNAME -t TABLENAME -U USERNAME -s --file=20130212_schema.sql

テーブルスキーマを変更する、テーブル削除のSQLを追加する

$ vim 20130212_schema.sql

念のためバックアップを取得する

$ pg_dump DBNAME -h HOSTNAME -t TABLENAME -U USERNAME --file=20130212_backup.sql

テーブルを変更する

$ psql DBNAME -h HOSTNAME -U USERNAME -f 20130212_schema.sql
$ psql DBNAME -h HOSTNAME -U USERNAME -f 20130212_data.sql