PostgreSQL: Von SQL_ASCII zu UTF8

Eigentlich dachte ich, ich hätte die Zeiten multipler Zeichenkodierungen fur Server, Datenbanken, Tabellen und Spalten – [it] may appear complex, but it has been found in practice that multiple-level defaulting leads to natural and obvious results – mit MySQL hinter mir gelassen, aber auch PostgreSQL wartet mit einigen Spitzfindigkeiten auf.

Die Template-Tabellen von PostgreSQL 9.0 werden unter CentOS nämlich mit der Pseudo-Kodierung SQL_ASCII angelegt, auf meinem Mac aber mit UTF-8, und die einzelnen Datenbanken übernehmen natürlich diese Einstellung.

Um die Kodierung anzugleichen, muss unter CentOS eine neue Datenbank mit der Angabe der gewünschten Kodierung und eines Templates angelegt werden:

CREATE DATABASE mydb2 OWNER dbuser ENCODING 'UTF8' TEMPLATE template0;

Immerhin sind die weiteren Schritte einigermaßen transparent:

pg_dump -U dbuser -E UTF8 mydb > /var/dbdump/mydb.sql psql -Udbuser mydb2 \i /var/dbdump/mydb.sql DROP DATABASE mydb; ALTER DATABASE mydb2 RENAME TO mydb; \q