PostgreSQLのデータ型
掲示板のコメントを間違って消してしまい、バックアップから復旧させることになった。pg_dumpallで丸ごと吸い上げているので、そこからデータを取り出すには、一旦別の場所にデータベースを作ってからやればいい。それで、このマシンで動いているPostgreSQLに突っ込もうとしたらエラーで動かない。古いバージョンで使えたdatetime型が新しいバージョンではサポートされなくなり、timestamp型を使わなければならない。で、castしろというメッセージが出るので、素直にcreate castしたら、datetimeなどというデータ型は知らんがな、というエラーが出てうまくいかない。結局、
psql -e -f dump.file template1 > textout
とやると、データベースの復元はできないが、textoutに、データベースの中身を読み出した記録がテキストで書かれるので、そちらから必用な部分を引っ張り出すことになった。
本当にクラッシュしたときは、一旦古いバージョンで復旧させてから、データのみを新しいバージョンに移行するといった作業になるのだろうか。もっとスマートな方法もありそうに思うが、ネットを探してもなかなか見あたらなかった。