Mein Postgres 8.1.14-Server lässt sich einfach nicht überreden, Zahlen im deutschen Format darzustellen.
LC_Numeric ist auf ‘de_DE’ eingestellt. Unter psql wurde mit show festgestellt, dass diese Einstellung aktiv ist.
Jetzt habe ich den postmaster mit -c lc_numeric=‘de_De’ gestartet. Ein Test unter psql mit show lc_numeric zeigte, dass das deutsche Zahlenformat auch aktviert ist.
Die Zahlen werden aber nach wie vor mit Punkt angezeigt.
Der Befehl \pset numeric locale ‘de_DE’ zeigt die Zahlen im richtigen Format an. Leider werden die Zahlen aber bei Anwendung des copy-befehls wieder falsch ausgegeben.
Das Format des Datums lässt sich übrigens wunderbar über die Umgebungsvariable PGDATESTYLE einstellen.
Was ist das Besondere an dem deutschen Zahlenformat ?
Eigentlich nichts, nur das es nicht richtig implementiert ist. Offentsichtlich ist das intern hard codiert. Ich habe auch noch keine Möglichkeit gefunden, es zu ändern.
Dürfte wohl ein Überbleibsel aus alten Zeiten sein, als man noch nicht die Erkenntnis hatte, das in anderen Ländern andere Formatierungen gelten.
Ich suche seit Tagen nach einer Lösung für dieses Problem, von dem ich annahm, dass es viele Anwender betreffen würde. Als ich überhaupt keine Äusserung zu meiner Fragestellung bekommen habe, bin ich davon ausgegangen, dass die Frage schlecht formuliert ist. Eine Neuformulierung schien mir sinnvoll, da ich unbedingt eine Lösung benötige.
Also bitte nicht böse sein, ich wusste nicht, was ich sonst noch machen sollte.
Kannst Du mir vielleicht sagen, wie Du Zahlen aus Textdateien einliesst, die - natürlich - das deutsche Zahlenformat haben. Ich kann nicht jede Textdatei in Excel einlesen und die Zahlenformatierung ändern.
ich habe eine Importtabelle vorgeschaltet, in der ich die Zahlen als String einlese. Anschließend konvertiere ich die Zahlen mit der Funktion “translate” in das richtig Format um sie dann in die Original Tabelle einzufügen.
Wäre schön, wenn der COPY-Befehl mal die Funktionalität von ORACLE’s “loaddata” bekommen würde. Dann könnte man die Probleme auf die einfachste Weise umgehen.