Dump unter Linux auf Windows wiederherstellen

Datenbank Migration (z. B. von MySQL auf PostgreSQL)
Antworten
stb
Neuer Benutzer
Beiträge: 3
Registriert: Do 24. Jul 2014, 16:08

Dump unter Linux auf Windows wiederherstellen

Beitrag von stb » Di 28. Okt 2014, 19:25

Hallo,

ich stehe vor dem Problem, dass ich ein pg_dump, das auf einem unter Linux laufenden Postgresql-Server erstellt wurde, in einem anderen Netzwerk wiederherstellen muss. Dort läuft der Postgresql-Server aber unter Windows.

Wenn ich die Fehlermeldungen richtig interpretiere liegt das wohl daran, dass unter Windows LC-COLLATE und LC_CTYPE bei mir beim Anlegen einer neuen Datenbank immer 'German_Germany.1252' heißt, auf Linux aber 'de_DE.UTF8'.

Lässt sich das Problem irgendwie lösen? Ich habe schon hier im Forum gesucht aber die Antworten haben mir nicht wirklich weiter geholfen.

Danke schon mal für alle Antworten

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Dump unter Linux auf Windows wiederherstellen

Beitrag von akretschmer » Di 28. Okt 2014, 19:37

stb hat geschrieben:Hallo,

ich stehe vor dem Problem, dass ich ein pg_dump, das auf einem unter Linux laufenden Postgresql-Server erstellt wurde, in einem anderen Netzwerk wiederherstellen muss. Dort läuft der Postgresql-Server aber unter Windows.


Windows? Was ist das? Nie gehört ...

Wenn ich die Fehlermeldungen richtig interpretiere liegt das wohl daran, dass unter Windows LC-COLLATE und LC_CTYPE bei mir beim Anlegen einer neuen Datenbank immer 'German_Germany.1252' heißt, auf Linux aber 'de_DE.UTF8'.

Lässt sich das Problem irgendwie lösen? Ich habe schon hier im Forum gesucht aber die Antworten haben mir nicht wirklich weiter geholfen.

Danke schon mal für alle Antworten


Google könnte helfen. Ich fand z.B. http://postgresql.1045698.n5.nabble.com ... 92707.html

Nur viel helfen kann ich nicht - nutze keine solchen Exoten-Umgebungen... jedenfalls baut PG in diesen Dingen auf das unterliegende OS. Wenn das zu davon keine Ahnung hat, sieht es schlecht aus.

castorp
Erfahrener Benutzer
Beiträge: 1174
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Dump unter Linux auf Windows wiederherstellen

Beitrag von castorp » Di 28. Okt 2014, 21:12

stb hat geschrieben:Wenn ich die Fehlermeldungen richtig interpretiere liegt das wohl daran, dass unter Windows LC-COLLATE und LC_CTYPE bei mir beim Anlegen einer neuen Datenbank immer 'German_Germany.1252' heißt, auf Linux aber 'de_DE.UTF8'.

Lässt sich das Problem irgendwie lösen?

Warum legst Du dann die Datenbank nicht mit UTF-8 an?
z.B. mit:

Code: Alles auswählen

initdb -D "%ProgramData%\postgres" -U postgres -E UTF8 -A md5
Der Parameter -E legt fest mit welchem Encoding die Datenbank angelegt werden soll.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

stb
Neuer Benutzer
Beiträge: 3
Registriert: Do 24. Jul 2014, 16:08

Re: Dump unter Linux auf Windows wiederherstellen

Beitrag von stb » Mi 29. Okt 2014, 08:37

Die Datenbank ist mit Kodierung UTF8 angelegt. Den Teil habe ich selber in der Hand. Die Sortierfolge und der Zeichentyp werden dann aber unter Windows automatisch auf German_Germany.1252 gesetzt. Da greift Postgresql in der Tat automatisch auf das zugrunde liegende OS zu (das hatte ich auch schon rausbekommen), bei Linux heißt dies dann eben de_DE.UTF8.

Was mich nur irritiert ist, dass pg_dump und pg_restore mit diesem Unterschied anscheinend nicht umgehen können. Bei pg_dump kann ich über den Schalter "--encoding" eine bestimmt Kodierung einstellen. Wähle ich dort "WIN1252" gelingt das restore und sowohl die Kodierung als auch die Sortierreihenfolge und Zeichttyp sind wie gewünscht korrekt.

Wenn ich aber unter Linux eine Datensicherung mache (meist ja ein Skript) gebe ich (und ich vermute die meisten anderen auch) ja keine andere Kodierung an. Zumindest bis jetzt nicht. Wenn dieser Umstand dann aber bedeutet, dass ich diese Datensicherung nur unter Linux wiederherstellen kann, nicht aber unter Windows, dann finde ich das suboptimal. Wie es sich mit den Kodierungen unter OS X und anderen Betriebssystemen verhält kann ich mangels Verfügbarkeit nicht testen.

Langer Rede kurzer Sinn: Ich bin davon ausgegangen, dass sich ein pg_dump auf jedem beliebigen Postgres-System per pg_restore wiederherstellen lässt. Da das bei mir nicht geklappt hat dachte ich, ich mache was falsch. Aber das scheint dann wohl noch nicht so zu sein, es geht einfach nicht.

castorp
Erfahrener Benutzer
Beiträge: 1174
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Dump unter Linux auf Windows wiederherstellen

Beitrag von castorp » Do 30. Okt 2014, 08:55

stb hat geschrieben:Die Datenbank ist mit Kodierung UTF8 angelegt. Den Teil habe ich selber in der Hand. Die Sortierfolge und der Zeichentyp werden dann aber unter Windows automatisch auf German_Germany.1252 gesetzt. Da greift Postgresql in der Tat automatisch auf das zugrunde liegende OS zu (das hatte ich auch schon rausbekommen), bei Linux heißt dies dann eben de_DE.UTF8

Aber das ist ja das client encoding welches Du jederzeit ändern kannst.

Code: Alles auswählen

set client_encoding=UTF-8

bzw. dauerhaft über die Umgebungsvariable PGCLIENTENCODING oder in der postgresql.conf: http://www.postgresql.org/docs/current/ ... T-ENCODING
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Antworten