Re: Welchen 'Data type' nehme ich hier?

Lists: pgsql-de-allgemein
From: Guenther Boelter <gboelter(at)gmail(dot)com>
To: "pgsql-de-allgemein(at)postgresql(dot)org Allgemein" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Welchen 'Data type' nehme ich hier?
Date: 2013-02-10 05:43:58
Message-ID: 5117339E.7020405@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Moin,

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.

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?

Problem ist, dass ich die XML-Dateien natuerlich irgendwann mal wieder
brauche, also aus der Datenbank hole, dabei aber eine Fehlermeldung
bekomme wegen der diversen '\012'.

Auf das Speichern der XML-Dateien wie auch auf das 'Laden' habe ich
wenig Einfluss, weil ich dort eine fremde Library einsetze und der fuer
die Library zustaendige Support behauptet natuerlich zunaechst mal, man
koenne den Fehler nicht nachvollziehen.

Ansonsten scheint jetzt alles zu funktionieren, auch wenn sich da
bestimmt spaeter noch diverse Optimierungen ergeben werden.

Einen schoenen Sonntag wuensche ich Euch ...

Gruss

Guenther
Davao City, Philippines, Planet Earth, 30.0 °C

--
DavaoSOFT, the home of ERPel
ERPel, das deutsche Warenwirtschaftssystem fuer LINUX
http://www.davaosoft.com


From: Andreas Kretschmer <akretschmer(at)spamfence(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Welchen 'Data type' nehme ich hier?
Date: 2013-02-10 08:23:18
Message-ID: 20130210082318.GA7346@tux
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Guenther Boelter <gboelter(at)gmail(dot)com> wrote:

> Moin,
>
> 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.

Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°


From: Guenther Boelter <gboelter(at)gmail(dot)com>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Welchen 'Data type' nehme ich hier?
Date: 2013-02-11 07:49:07
Message-ID: 5118A273.8010002@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 02/10/2013 04:23 PM, Andreas Kretschmer wrote:<br>
<span style="white-space: pre;">&gt; Guenther Boelter
<a class="moz-txt-link-rfc2396E" href="mailto:gboelter(at)gmail(dot)com">&lt;gboelter(at)gmail(dot)com&gt;</a> wrote:<br>
&gt;<br>
&gt;&gt; Moin,<br>
&gt;&gt;<br>
&gt;&gt; ich habe mal wieder ein kleineres Problem im Rahmen der
Umstellung von<br>
&gt;&gt; MySQL auf PostgreSQL:<br>
&gt;&gt;<br>
&gt;&gt; Welchen 'data type' nehme ich sinnvollerweise fuer<br>
&gt;&gt;<br>
&gt;&gt; A:) PDF-Dateien (ca. 25 KB gross)<br>
&gt;&gt;<br>
&gt;&gt; B:) XML-Dateien (ca. 10-20 KB gross)<br>
&gt;&gt;<br>
&gt;&gt; Die PDF-Dateien habe ich zunaechst mal als BYTEA
gespeichert, die<br>
&gt;&gt; XML-Dateien als TEXT.<br>
&gt;<br>
&gt; Dass sollte okay sein. Es gibt auch einen speziellen
XML-Datentyp:<br>
&gt;
<a class="moz-txt-link-freetext" href="http://www.postgresql.org/docs/current/interactive/datatype-xml.html">http://www.postgresql.org/docs/current/interactive/datatype-xml.html</a><br>
&gt;<br>
&gt; Ob dieser besser als TEXT ist mu&szlig;t Du entscheiden, der
XML-Datentyp hat<br>
&gt; halt noch z.B. Konsistenzpr&uuml;fungen und so.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Bei den PDF-Dateien konnte ich es bisher noch nicht
pruefen, aber bei<br>
&gt;&gt; den XML-Dateien scheint PostgreSQL die enthaltenen '\n'
in '\012'<br>
&gt;&gt; unzuwandeln. Letzt sich Letzeres irgendwie verhindern?<br>
&gt;<br>
&gt; Unwahrscheinlich. PostgreSQL vergreift sich nicht an den
Daten.<br>
&gt; Im &uuml;brigen ist '\n' oktal '\012'. Evtl. ist was bei
Konvertierungen<br>
&gt; zwischen Windows / Linux kapott gegangen.<br>
&gt;<br>
&gt;<br>
&gt; Andreas</span><br>
<br>
Moin Andreas,<br>
<br>
kurzes Feedback zu dem Problem mit dem&nbsp; '\n' bzw. '\012':<br>
<br>
Es ist tatsaechlich ein Fehler in der Library den MySQL einfach
ignoriert hat. PostgreSQL dagegen gibt folgende Warnung aus:<br>
<br>
WARNING:&nbsp; nonstandard use of \\ in a string literal<br>
LINE 1: EXECUTE qpsqlpstmt_1 ('&lt;?xml version="1.0"
encoding="utf-8"?...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^<br>
HINT:&nbsp; Use the escape string syntax for backslashes, e.g., E'\\'.<br>
<br>
Dafuer musste ich allerdings auch erst den Debugger anwerfen.<br>
<br>
Gruss<br>
<br>
Guenther<br>
<br>
-- <br>
DavaoSOFT, the home of ERPel<br>
ERPel, das deutsche Warenwirtschaftssystem fuer LINUX<br>
<a class="moz-txt-link-freetext" href="http://www.davaosoft.com">http://www.davaosoft.com</a><br>
<br>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 3.1 KB

From: Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "Guenther Boelter *EXTERN*" <gboelter(at)gmail(dot)com>, "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Welchen 'Data type' nehme ich hier?
Date: 2013-02-11 11:46:52
Message-ID: A737B7A37273E048B164557ADEF4A58B057B1D6B@ntex2010a.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

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


From: Guenther Boelter <gboelter(at)gmail(dot)com>
To: "pgsql-de-allgemein(at)postgresql(dot)org Allgemein" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Welchen 'Data type' nehme ich hier?
Date: 2013-02-12 08:07:48
Message-ID: 5119F854.7020109@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

On 02/11/2013 07:46 PM, Albe Laurenz wrote:
> 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
>
Hallo Laurenz,

Ja, es handelt sich um Version 8.4.13 auf einem CentOS-Server.

Kurz bevor Deine Mail hier einging hatte ich gerade Deinen Beitrag hier
-
https://groups.google.com/forum/?fromgroups=#!topic/comp.databases.postgresql/y3u3e6LrtBw
- gefunden.

Der Fehler lag aber tatsaechlich in dem von mir eingesetzten
(proprietaeren) NCReport, von dem ich zum Glueck aber auch den Source
besitze. Mit Hilfe des Supports von Nocisoft konnte ich den Fehler dann
lokalisieren und 'an der Quelle' beheben.

Das bisher keiner ueber den Fehler gestolpert ist kann ich mir nur so
erklaeren, dass niemand die Lib zusammen mit PostgreSQL einsetzt. Unter
MySQL wird dieser Fehler zwar auch 'angemeckert', dann aber einfach
ignoriert.

Ich sehe schon, ich haette viel frueher zu PostgreSQL wechseln sollen ...

Herzliche Gruesse

Guenther
Davao City, Philippines, Planet Earth, 32.0 °C im Schatten!

--
DavaoSOFT, the home of ERPel
ERPel, das deutsche Warenwirtschaftssystem fuer LINUX
http://www.davaosoft.com