データベース

PostgreSQLの移行(バージョンアップ)


PostgreSQLの移行(バージョンアップ)

[ OLD SERVER ]
pg_dump -F p -s -v -i -f hoge-schema.sql hoge-db
pg_dump -F p -a -v -i -O -f hoge-data.sql hoge-db

スキーマ(テーブル定義)と中身(データ)を分けて出力


[ NEW SERVER ]
su - postgres
psql -l
# DBがあればDROPで
# dropdb hoge-db
$PG_HOME/bin/createuser foo
$PG_HOME/bin/createdb -O foo -E EUC_JP hoge-db

# 確認してrep_str.sh を実行(とりあえず改行取るだけ。CRLF -> LFに。)
ls -l
./rep_str.sh

[ rep_str.sh ]
--------------
#!/bin/sh

sed -e 's/\\r\\n/\\n/g' hoge-data.sql > hoge-data2.sql
[EOF]
--------------


# スキーマは -U なし。データはDB接続アカウントの権限で実行
psql -d hoge-db -f hoge-schema.sql
psql -d hoge-db -U foo -f hoge-data2.sql

psql -d hoge-db -f alter-tables.sql


wgetかなんかでOLDServerからDLした後、DB作成してコマンドとAlterのSQLをま
とめて実行かけて、適切なACLを設定。

[ alter-tables.sql ]
------------------
ALTER TABLE test OWNER TO foo;
REVOKE ALL ON TABLE test FROM postgres;
------------------
このページの先頭へ