あるシステム管理者の日常 このページをアンテナに追加 RSSフィード

2010-08-25 PostgreSQLのDBエンコードを変更

PostgreSQLのDBエンコードを変更

| PostgreSQLのDBエンコードを変更を含むブックマーク

昨日のエントリでsqlalchemyで接続すると、文字エンコードが当該DBのclient_encodeになってしまう件をかきました。

悪いのはSQL_ASCIIで作成したDBにUTF8のデータを突っ込んでたから。というわけで、UTF8に変換してみました。

まずダンプする

まずpg_dumpで当該DBをダンプ。

$ /usr/local/pgsql/bin/pg_dump hogedb > hogedb.dmp

UTF8で別DBを作成

$ /usr/local/pgsql/bin/createdb -E utf8 hogedb_utf8

先ほどダンプしたファイルからclient_encodingの行を取り除く

エディタかなにかで

SET client_encoding = 'SQL_ASCII';

この行をとりのぞく。でかくてviでは無理ならsedgrepでもできる。

nkf文字コード変換して新しいDBへ投入

$ nkf --oc=UTF-8 hogedb.dmp  | /usr/local/pgsql/bin/psql hogedb_utf8 -f -
トラックバック - http://d.hatena.ne.jp/rougeref/20100825