Re: Welchen 'Data type' nehme ich hier?
Albe Laurenz <[email protected]>
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <A737B7A37273E048B164557ADEF4A58B057B1D6B@ntex2010a.host.magwien.gv.at> |
Guenther Boelter schrieb:
> >> ich habe mal wieder ein kleineres Problem im Rahmen der Umstellung von
> >> MySQL auf PostgreSQL:
> >>
> >> Welchen 'data type' nehme ich sinnvollerweise fuer
> >>
> >> A:) PDF-Dateien (ca. 25 KB gross)
> >>
> >> B:) XML-Dateien (ca. 10-20 KB gross)
> >>
> >> Die PDF-Dateien habe ich zunaechst mal als BYTEA gespeichert, die
> >> XML-Dateien als TEXT.
> >
> > Dass sollte okay sein. Es gibt auch einen speziellen XML-Datentyp:
> > http://www.postgresql.org/docs/current/interactive/datatype-xml.html
> >
> > Ob dieser besser als TEXT ist mußt Du entscheiden, der XML-Datentyp hat
> > halt noch z.B. Konsistenzprüfungen und so.
> >
> >
> >>
> >> Bei den PDF-Dateien konnte ich es bisher noch nicht pruefen, aber bei
> >> den XML-Dateien scheint PostgreSQL die enthaltenen '\n' in '\012'
> >> unzuwandeln. Letzt sich Letzeres irgendwie verhindern?
> >
> > Unwahrscheinlich. PostgreSQL vergreift sich nicht an den Daten.
> > Im übrigen ist '\n' oktal '\012'. Evtl. ist was bei Konvertierungen
> > zwischen Windows / Linux kapott gegangen.
> kurzes Feedback zu dem Problem mit dem '\n' bzw. '\012':
>
> Es ist tatsaechlich ein Fehler in der Library den MySQL einfach ignoriert hat. PostgreSQL dagegen gibt
> folgende Warnung aus:
>
> WARNING: nonstandard use of \\ in a string literal
> LINE 1: EXECUTE qpsqlpstmt_1 ('<?xml version="1.0" encoding="UTF-8"?...
> ^
> HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
>
> Dafuer musste ich allerdings auch erst den Debugger anwerfen.
Es handelt sich um eine PostgreSQL-Version vor 9.1, richtig?
Es gibt mehrere Lösungen:
1) standard_conforming_strings = on
2) Wörtlich gemeinte Backslashes verdoppeln und die String-Konstante
mit einem "E" einleiten: EXECUTE s (E'<?xml ... \\n ...>');
3) Extended Query Protocol (mit Parametern) verwenden
Liebe Grüße,
Laurenz Albe
--
Sent via pgsql-de-allgemein mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein