Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)

Lists: pgsql-de-allgemein
From: Christian Tonhäuser <christian(dot)tonhaeuser(at)gmx(dot)net>
To: <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-06 07:27:20
Message-ID: 000601ccb3e8ef742a0ce5c7e0$@tonhaeuser@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hallo zusammen,

ich verwende PostgreSQL im Zusammenhang mit einer Webanwendung. Ein
Bestandteil davon ist eine kleine Dokumentenverwaltung. Ich möchte also
Dateien jeglicher Art in der Datenbank ablegen (komplett als large objects).

Für pdf-Dateien funktioniert das auch wunderbar, nur bei Excel-Dateien kommt
beim Öffnen, der aus der DB wiederhergestellten Datei die Meldung, dass die
Datei beschädigt sei. In der Datei selbst konnte ich aber nach dem
Reparieren keinen Fehler feststellen.

Kennt jemand von auch das Problem und evtl. eine Lösung dazu? Betrifft das
evtl. noch weitere Arten von Dateien?

Danke

Christian


From: Andreas Kretschmer <akretschmer(at)internet24(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-06 07:33:41
Message-ID: 4EDDC555.5010309@internet24.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Am 06.12.2011 08:27, schrieb Christian Tonhäuser:
> Hallo zusammen,
>
>
>
> ich verwende PostgreSQL im Zusammenhang mit einer Webanwendung. Ein
> Bestandteil davon ist eine kleine Dokumentenverwaltung. Ich möchte also
> Dateien jeglicher Art in der Datenbank ablegen (komplett als large
> objects).
>
> Für pdf-Dateien funktioniert das auch wunderbar, nur bei Excel-Dateien
> kommt beim Öffnen, der aus der DB wiederhergestellten Datei die Meldung,
> dass die Datei beschädigt sei. In der Datei selbst konnte ich aber nach
> dem Reparieren keinen Fehler feststellen.

Nach dem 'Reparieren'? Was genau wird da repariert?

>
> Kennt jemand von auch das Problem und evtl. eine Lösung dazu? Betrifft
> das evtl. noch weitere Arten von Dateien?

Vermutlich machst Du was falsch. Was genau, läßt sich aber aus Deinen
übermittelten Informationen nicht rekonstruieren.

Andreas
--
Andreas Kretschmer
http://internet24.de


From: Christian Tonhäuser <christian(dot)tonhaeuser(at)gmx(dot)net>
To: <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-07 08:03:53
Message-ID: 001801ccb4b6$c4ccb7a0e6626e0$@tonhaeuser@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hallo,

sorry, ich hab deine Mail eben erst gelesen, sie war in den spam-ordner
gerutscht.

Also beim Öffnen von xlsx-Dateien mit Excel, die ich aus der Datenbank
ausgelesen hab bekomm ich folgende Meldung:
Von Excel wurde unlesbarer Inhalt in 'Mappe1.xlsx' gefunden. Möchten Sie den
Inhalt dieser Arbeitsmappe wiederherstellen? wenn Sie der Quelle dieser
Arbeitsmappe vertrauen, klicken Sie auf 'Ja'.

Dann wird das Dokument geöffnet mit der Meldung:
Excel hat die Überprüfung und Reparatur auf Dateiebene abgeschlossen. Einige
Teile dieser Arbeitsmappe wurden repariert oder verworfen.

Der Inhalt (ich habe nur wenige Zellen ausgefüllt, keine Grafiken, Diagramme
etc.) ist noch da, dennoch scheint irgendwas nicht zu funktionieren.

Mit alten Excel Dateien (.xls) habe ich keine Probleme, nur mit dem neuen
(.xlsx).

Ich lade die Datei aus einer Webanwendung (ASP mit VB.net) in die Datenbank.

kurz skizziert:
lbm = LargeObjectManager
noid as Integer = lbm.Create
lo as LargeObject = lbm.Open(noid)
fs as filestream (datei)
fs.read(buffer,0,fs.length)
lo.write(buffer)
lo.close

-- Umwandeln der Datei in einen Bytearray (buffer), schreiben des Puffers in
das Large Object

beim auslesen:
lo = lbm.open(noid)
buffer = lo.read
fs.write(buffer)
fs.flush
fs.close

--Analog beim Auslesen, die Details habe ich weggelassen

Ich hab keine Ahnung woran das liegt, bei der Anwendung hab ich mich nah an
das Manual von Npgsql (dem .net Treiber) gehalten.
Danke jetzt schon mal für eure Hilfe

Christian

-----Ursprüngliche Nachricht-----
Von: pgsql-de-allgemein-owner(at)postgresql(dot)org
[mailto:pgsql-de-allgemein-owner(at)postgresql(dot)org] Im Auftrag von Andreas
Kretschmer
Gesendet: Tuesday, December 06, 2011 8:34 AM
An: pgsql-de-allgemein(at)postgresql(dot)org
Betreff: Re: [pgsql-de-allgemein] Fehler beim Auslesen kompletter
Excel-Dateien (large objects)

Am 06.12.2011 08:27, schrieb Christian Tonhäuser:
> Hallo zusammen,
>
>
>
> ich verwende PostgreSQL im Zusammenhang mit einer Webanwendung. Ein
> Bestandteil davon ist eine kleine Dokumentenverwaltung. Ich möchte also
> Dateien jeglicher Art in der Datenbank ablegen (komplett als large
> objects).
>
> Für pdf-Dateien funktioniert das auch wunderbar, nur bei Excel-Dateien
> kommt beim Öffnen, der aus der DB wiederhergestellten Datei die Meldung,
> dass die Datei beschädigt sei. In der Datei selbst konnte ich aber nach
> dem Reparieren keinen Fehler feststellen.

Nach dem 'Reparieren'? Was genau wird da repariert?

>
> Kennt jemand von auch das Problem und evtl. eine Lösung dazu? Betrifft
> das evtl. noch weitere Arten von Dateien?

Vermutlich machst Du was falsch. Was genau, läßt sich aber aus Deinen
übermittelten Informationen nicht rekonstruieren.

Andreas
--
Andreas Kretschmer
http://internet24.de


From: Andreas Kretschmer <akretschmer(at)internet24(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-07 08:11:45
Message-ID: 4EDF1FC1.50008@internet24.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Am 07.12.2011 09:03, schrieb Christian Tonhäuser:
> Hallo,
>
> sorry, ich hab deine Mail eben erst gelesen, sie war in den spam-ordner
> gerutscht.

Tss tss tss ...

>
> Also beim Öffnen von xlsx-Dateien mit Excel, die ich aus der Datenbank
> ausgelesen hab bekomm ich folgende Meldung:
> Von Excel wurde unlesbarer Inhalt in 'Mappe1.xlsx' gefunden. Möchten Sie den
> Inhalt dieser Arbeitsmappe wiederherstellen? wenn Sie der Quelle dieser
> Arbeitsmappe vertrauen, klicken Sie auf 'Ja'.
>
> Dann wird das Dokument geöffnet mit der Meldung:
> Excel hat die Überprüfung und Reparatur auf Dateiebene abgeschlossen. Einige
> Teile dieser Arbeitsmappe wurden repariert oder verworfen.
>
> Der Inhalt (ich habe nur wenige Zellen ausgefüllt, keine Grafiken, Diagramme
> etc.) ist noch da, dennoch scheint irgendwas nicht zu funktionieren.
>
> Mit alten Excel Dateien (.xls) habe ich keine Probleme, nur mit dem neuen
> (.xlsx).

Nur eine Vermutung: beim Speichern war die Datei noch von Excel geöffnet.

Andreas
--
Andreas Kretschmer
http://internet24.de


From: Christian Tonhäuser <christian(dot)tonhaeuser(at)gmx(dot)net>
To: <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-07 08:24:18
Message-ID: 001c01ccb4b9$a0dc18b0$e2944a10$@tonhaeuser@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Gute Vermutung, ich habs eben nochmal versucht, es liegt aber nicht daran.
Die Meldung tritt auch dann auf, wenn die Datei nicht in Excel geöffnet war.

-----Ursprüngliche Nachricht-----
Von: pgsql-de-allgemein-owner(at)postgresql(dot)org
[mailto:pgsql-de-allgemein-owner(at)postgresql(dot)org] Im Auftrag von Andreas
Kretschmer
Gesendet: Wednesday, December 07, 2011 9:12 AM
An: pgsql-de-allgemein(at)postgresql(dot)org
Betreff: Re: [pgsql-de-allgemein] Fehler beim Auslesen kompletter
Excel-Dateien (large objects)

Am 07.12.2011 09:03, schrieb Christian Tonhäuser:
> Hallo,
>
> sorry, ich hab deine Mail eben erst gelesen, sie war in den spam-ordner
> gerutscht.

Tss tss tss ...

>
> Also beim Öffnen von xlsx-Dateien mit Excel, die ich aus der Datenbank
> ausgelesen hab bekomm ich folgende Meldung:
> Von Excel wurde unlesbarer Inhalt in 'Mappe1.xlsx' gefunden. Möchten Sie
den
> Inhalt dieser Arbeitsmappe wiederherstellen? wenn Sie der Quelle dieser
> Arbeitsmappe vertrauen, klicken Sie auf 'Ja'.
>
> Dann wird das Dokument geöffnet mit der Meldung:
> Excel hat die Überprüfung und Reparatur auf Dateiebene abgeschlossen.
Einige
> Teile dieser Arbeitsmappe wurden repariert oder verworfen.
>
> Der Inhalt (ich habe nur wenige Zellen ausgefüllt, keine Grafiken,
Diagramme
> etc.) ist noch da, dennoch scheint irgendwas nicht zu funktionieren.
>
> Mit alten Excel Dateien (.xls) habe ich keine Probleme, nur mit dem neuen
> (.xlsx).

Nur eine Vermutung: beim Speichern war die Datei noch von Excel geöffnet.

Andreas
--
Andreas Kretschmer
http://internet24.de


From: Andreas Kretschmer <akretschmer(at)internet24(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-07 08:37:18
Message-ID: 4EDF25BE.6000305@internet24.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Am 07.12.2011 09:24, schrieb Christian Tonhäuser:
> Gute Vermutung, ich habs eben nochmal versucht, es liegt aber nicht daran.
> Die Meldung tritt auch dann auf, wenn die Datei nicht in Excel geöffnet war.

Okay.

Vergleich die md5-Summen vor/nach der Speicherung in der DB.

Andreas
--
Andreas Kretschmer
http://internet24.de


From: Christian Tonhäuser <christian(dot)tonhaeuser(at)gmx(dot)net>
To: "'Andreas Kretschmer'" <akretschmer(at)internet24(dot)de>, <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-07 08:53:42
Message-ID: 001d01ccb4bd$bc4fd970ef8c50$@tonhaeuser@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Wie genau mach ich das mit den MD5-Summen? Sorry für die blöde Frage.

Noch was anderes: Wenn ich die Datei direkt (also nicht über die Anwendung)
speichern und wieder herausholen will, wie mach ich das? Dann kann ich
schauen, obs an der Anwendung oder an der DB liegt.

Danke
Christian

-----Ursprüngliche Nachricht-----
Von: pgsql-de-allgemein-owner(at)postgresql(dot)org
[mailto:pgsql-de-allgemein-owner(at)postgresql(dot)org] Im Auftrag von Andreas
Kretschmer
Gesendet: Wednesday, December 07, 2011 9:37 AM
An: pgsql-de-allgemein(at)postgresql(dot)org
Betreff: Re: [pgsql-de-allgemein] Fehler beim Auslesen kompletter
Excel-Dateien (large objects)

Am 07.12.2011 09:24, schrieb Christian Tonhäuser:
> Gute Vermutung, ich habs eben nochmal versucht, es liegt aber nicht daran.
> Die Meldung tritt auch dann auf, wenn die Datei nicht in Excel geöffnet
war.

Okay.

Vergleich die md5-Summen vor/nach der Speicherung in der DB.

Andreas
--
Andreas Kretschmer
http://internet24.de


From: Andreas Kretschmer <kretschmer(at)internet24(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-07 09:51:15
Message-ID: 4EDF3713.4000701@internet24.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein


Am 07.12.2011 09:53, schrieb Christian Tonhäuser:
> Wie genau mach ich das mit den MD5-Summen? Sorry für die blöde Frage.

md5sum <Dateiname>

Und dann halt vergleichen. Falls Dein Betriebssystem md5sum kennt ...

>
> Noch was anderes: Wenn ich die Datei direkt (also nicht über die Anwendung)
> speichern und wieder herausholen will, wie mach ich das? Dann kann ich
> schauen, obs an der Anwendung oder an der DB liegt.

Müßte ich auch erst in der Doku schauen. Was für ein Datentyp?
Hilft Dir
> http://www.postgresql.org/docs/9.1/interactive/lo-interfaces.html#LO-IMPORT

weiter?

Mit freundlichen Grüssen

Andreas Kretschmer
- Technik -

--
HINWEIS: Der internet24-Support arbeitet im Team -
bitte senden Sie daher immer die komplette Mailkommunikation mit.

-------------------------------------------------
internet24 GmbH Bayrische Str. 18 D-01069 Dresden
Fon : +49 (0)3 51 / 2 11 20 30
Fax : +49 (0)3 51 / 2 11 20 20
E-Mail: kretschmer(at)internet24(dot)de
URL : www.internet24.de
Blog : blog.internet24.de

Geschäftsführer: Heiko Heerwagen
Registergericht: Amtsgericht Dresden HRB 12 899


From: Andreas 'ads' Scherbaum <adsmail(at)wars-nicht(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-07 16:11:50
Message-ID: 4EDF9046.5040902@wars-nicht.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein


Hallo,

Am 06.12.2011 08:27, schrieb Christian Tonhäuser:
>
> ich verwende PostgreSQL im Zusammenhang mit einer Webanwendung. Ein
> Bestandteil davon ist eine kleine Dokumentenverwaltung. Ich möchte also
> Dateien jeglicher Art in der Datenbank ablegen (komplett als large
> objects).
>
> Für pdf-Dateien funktioniert das auch wunderbar, nur bei Excel-Dateien
> kommt beim Öffnen, der aus der DB wiederhergestellten Datei die Meldung,
> dass die Datei beschädigt sei. In der Datei selbst konnte ich aber nach
> dem Reparieren keinen Fehler feststellen.
>
> Kennt jemand von auch das Problem und evtl. eine Lösung dazu? Betrifft
> das evtl. noch weitere Arten von Dateien?

Warum Large Objects?
In ein ByteA Feld passen ca. 1 GB an Daten hinein - reicht das nicht aus?

Bis dann,

--
Andreas 'ads' Scherbaum
German PostgreSQL User Group
European PostgreSQL User Group - Board of Directors
Volunteer Regional Contact, Germany - PostgreSQL Project


From: Thomas Markus <t(dot)markus(at)proventis(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Fehler beim Auslesen kompletter Excel-Dateien (large objects)
Date: 2011-12-08 06:31:38
Message-ID: 4EE059CA.7040402@proventis.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hi,

an sich schon. Aber bytea kann man nicht streamen.
Aber in dem Fall hier wäre evtl ein bytea besser. Allein schon wg der DB
Abhängigkeit für Unittests.

@Christian:
- in VB.net gibt es MD5CryptoServiceProvider, damit kannst du vor dem
Speichern und nach dem Laden den hash vergleichen. Google ist dein Freund
- liefert deine Webanwendung bei der Auslieferung des Files den
richtigen Content-Type & Content-Length?
- wird das File vom Webserver komprimiert ausgeliefert?

Gruss
Thomas

Am 07.12.2011 17:11, schrieb Andreas 'ads' Scherbaum:
>
> Warum Large Objects?
> In ein ByteA Feld passen ca. 1 GB an Daten hinein - reicht das nicht aus?
>
>
> Bis dann,
>