DB Ausgabe nach CSV

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Jang
Beiträge: 5
Registriert: Sa, 14.03.2015 18:02

DB Ausgabe nach CSV

Beitrag von Jang »

Hallo,

ich habe mir die portable Version 3.2.0 installiert und komme nicht mit der Ausgabe der Datenbank klar :(

In der Datenbank sind Einträge mit Umlauten ÄÜß etc. enthalten und die sollen so natürlich auch ausgegeben werden. Z.B in eine CSV-Datei.

Testhalber habe ich einige Einträge vorgenommen und diese dann über SQL

SELECT * INTO TEXT "meine_csv" FROM "Test"

als CSV-Datei ausgeben lassen. Allerdings sind dort nun keine Umlaute enthalten sondern an deren Stelle nur Fragezeichen.

Was habe ich da wo falsch eingegeben? Bzw. welche einfache Möglichkeit gibt es meine Daten aus Base in eine CSV auszugeben?

Bisher habe ich mich nicht mit Base beschäftigt und habe einfach einen Schnellversuch für einen Projekttest versucht ;-)

Freue mich auf jeden hilfreichen Hinweis. Danke für eure Aufmerksamkeit

Gruß Jang
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: DB Ausgabe nach CSV

Beitrag von F3K Total »

Hi,
du kannst die Tabelle per Copy/Paste oder bei angemeldeter Datenbank per drag and drop in ein Calc Dokument schieben.
Ist die Datenbank angemeldet, sind die Daten sogar verknüpft und können beim Öffnen der Calc-Datei automatisch aktualisiert werden.
Aus Calc kannst du als .csv speichern, dann klappt's auch mit den Umlauten, siehe z.B. Videotutorial 9 (meine Signatur)
Gruß R
Jang
Beiträge: 5
Registriert: Sa, 14.03.2015 18:02

Re: DB Ausgabe nach CSV

Beitrag von Jang »

Hallo,

Danke für deinen Hinweis. Werde ich mir näher ansehen. Eben habe ich aber auch noch diesen Hinweis gefunden, der wohl auch passt.

Bisher habe ich noch nicht verstanden warum und weshalb ich eine Datenbank anmelden sollte ... und diese deshalb nicht angemeldet. Muss ich mich erst mal etwas einlesen und alles mit mehr Ruhe ansehen.

Gruß Jang
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: DB Ausgabe nach CSV

Beitrag von RobertG »

Hallo Jang,

verschiedene Möglichkeiten:
- Tabelle über das Kontextmenü kopieren und in Calc einfügen (einfachste Variante, geht auch mit Drag and Drop)
- Dauerhafte Lösung in der Datenbankdatei: Datenbankdatei entpacken, in das Unterverzeichnis "database" gehen und dort die Datei "properties" um den Eintrag
textdb.encoding=UTF-8
ergänzen. Die gesamte Datei properties sieht dann so aus:

Code: Alles auswählen

#HSQL Database Engine 1.8.0.10
#Sat Mar 14 19:05:00 CET 2015
hsqldb.script_format=0
runtime.gc_interval=0
sql.enforce_strict_size=true
hsqldb.cache_size_scale=8
readonly=false
hsqldb.nio_data_file=false
hsqldb.cache_scale=13
version=1.8.0
hsqldb.default_table_type=cached
hsqldb.cache_file_scale=1
hsqldb.lock_file=true
hsqldb.log_size=10
modified=no
hsqldb.cache_version=1.7.0
hsqldb.original_version=1.8.0
hsqldb.compatible_version=1.8.0
textdb.encoding=UTF-8
Anschließend das Verzeichnis database ind der *.odb-Datei löschen und das bearbeitete Verzeichnis einfügen - es sei denn, Dein Packprogramm lässt es auch zu, dass einzelne Dateien in Unterverzeichnissen ersetzt werden - dann also nur die Datei "properties" ersetzen. All diese Schritte würde ich mit einer Kpopie Deiner Datenbank machen - nicht direkt am Original herumexperimentieren!
Mit der Einstellung habe ich gerade einen Export mit Sonderzeichen hin bekommen. Allerdings habe ich nicht Deine Office-Version, aber die Datenbank ist ja gleich geblieben.

- Was natürlich auch noch geht ist, dass Du vorher eine entsprechende Tabelle mit einer entsprechenden Einstellung importierst, wie Dies in dem Beitrag passiert, den Du auf der englischsprachigen Liste gefunden hast. Ich würde dazu einfach einmal den (erfolglosen) Export machen und alle Daten in der entstandenen Datei löschen. Dann hast Du die Spaltenköpfe und den Dateinamen.
Anschließend reicht ein

Code: Alles auswählen

SET TABLE "Tabbelnname" SOURCE "xyz.csv;encoding=UTF-8";
aus. Dann hat die HSQLDB die Information, in welchem Zeichensatz die Tabelle existiert und exportiert auch in diesem Zeichensatz.

Vorsicht! So exportierte Datein werden auch innerhalb der Base-Datei weiter angezeigt. Base erwartet also diese Dateien weiterhin in dem Verzeichnis, in dem die Datenbank selbst auch liegt. Die Einträge in der Datenbankdatei bleiben weiter enthalten, auch wenn Du die *.csv-Dateien anschließend entfernst.

Gruß

Robert
Jang
Beiträge: 5
Registriert: Sa, 14.03.2015 18:02

Re: DB Ausgabe nach CSV

Beitrag von Jang »

Hallo Robert,
Tabelle über das Kontextmenü kopieren und in Calc einfügen (einfachste Variante,
Das war es auf Anhieb! Danke! Und von dort aus dann exportiert. Und natürlich werde ich mich später auch mit deinen weiteren Hinweisen beschäftigen. Erstmal freue ich mich über ein kleines aber wichtiges Erfolgserlebnis :)

Gruß Jang
Jang
Beiträge: 5
Registriert: Sa, 14.03.2015 18:02

Re: DB Ausgabe nach CSV

Beitrag von Jang »

Hallo Robert,

auf den zweiten Blick ist es das auch nicht .. das Kopieren der DB-Tabelle nach Calc. In der DB-Tabelle habe ich nur TEXT-Felder, die aber auch mit Datumsangaben gefüllt sind. Beim Kopieren nach Calc werden diese Felder wieder automatisch mit dem Datumsformat formatiert. Das soll aber nicht sein.

Mein Export nach CSV wie im englischen Forum beschrieben konnte übrigens nicht funktionieren. Ich hatte eine Fehlermeldung in SQL übersehen.
1: Table not found in statement [SET TABLE "Anzeigen" SOURCE "MyOutputFile.CSV;ignore_first=false;all_quoted=false;encoding=UTF-8"]
Weshalb es ja auch nie bei mir funktionieren konnte und die Umlaute danach eben nicht vorhanden waren. Mein Fehler. Nur welche Table wird da nun nicht gefunden? Meine Tabelle hat doch die Bezeichnung Anzeigen.

Ich hab meine Datenbank angelegt, in dieser eine Tabelle die außer dem ID-Feld (Integer,Auto) nur noch weitere Felder als Varchar enthält. Eine einfache Geschichte. Alle Umlaute in diesen Datensätzen sollen natürlich bei einem Export vorhanden sein. Und Datumseingaben sind dort ja als Varchar-Typ abgelegt und sollen auch so bei einem Export erhalten bleiben. Alles aus der Datenbank soll halt so wie in der DB abgelegt in eine CSV geschrieben werden.

Ich dachte das wäre ein Klacks mit Openoffice ... ist es wohl aber nicht ;-). Hat mich heute schon ziemlich frustriert.

Lege die Geschichte erstmal ein paar Tage auf Eis ... da ich derzeit da gar nicht mehr durchblicke :(

Allen noch einen schönen Restsonntag und einen guten Wochenbeginn.

MfG Jang
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: DB Ausgabe nach CSV

Beitrag von RobertG »

Hallo Jang,

mache die folgenden Schritte:

Code: Alles auswählen

SELECT * INTO TEXT "Ausgabe" FROM "Anzeigen"
Schließe anschließend die Base -Datei.
Suche die Datei "Ausgabe.csv" in dem Verzeichnis auf und leere sie von allem Inhalt und kopiere sie nach anderswo hin. (Kann sein, dass die Kopie nicht nötig ist)
Öffne die Basedatei und gebe folgendes ein:

Code: Alles auswählen

SET TABLE "Ausgabe" SOURCE "Ausgabe.csv;encoding=UTF-8";
Diese Tabelle wird erst einmal leer sein, jetzt aber hoffentlich das richtige Encoding besitzen.
Danach wieder

Code: Alles auswählen

SELECT * INTO TEXT "Ausgabe" FROM "Anzeigen"
und der Text erscheint hoffentlich in der entsprechenden Tabelle und mit den Sonderzeichen.

Ich habe das nicht weiter ünerprüft. Gib also einmal Rückmeldung, ob das klappt.
Die Variante mit der Einstellung des Encodings innerhalb der Base-Datei klappt auf jeden Fall, ist bloß etwas trickreicher.
Warum Du mit der Datumseinstellung nichts anfangen kannst (in der von Calc exportiereten CSV-Datei macht das doch nichts ...), ist mir nicht ganz klar.

Gruß

Robert
Jang
Beiträge: 5
Registriert: Sa, 14.03.2015 18:02

Re: DB Ausgabe nach CSV

Beitrag von Jang »

Hallo Robert,

Danke für deine Geduld mit mir ;-)

Nach deiner letzten Anleitung hat es leider auch nicht geklappt. Da kam es immer zu dieser Meldung:
1: Table already exists: Ausgabe in statement [SELECT * INTO TEXT "Ausgabe" FROM "Anzeigen"]
Aber ich habe nun deinen obrigen Vorschlag befolgt und die Datei properties verändert. Es klappte aber erst mit dem Eintrag textdb.encoding=ansi, erst damit waren die Umlaute vorhanden.

Und dank deinem Hinweis wie ich die Datei anpassen kann ... habe ich wieder dazugelernt! Denn vorher wusste ich gar nicht das die DB in gepackter Form vorliegt etc. :)

Nach meiner Anpassung wird die CSV so erstellt wie es sein soll! Super! Und natürlich hast du Recht - die Formatierung des Datums spielt da gar keine Rolle! Lediglich bei einem späteren Import nach Calc ... aber da kann man dann ja die entsprechenden Spalten wieder mit dem richtigen Format setzen.

Danke für deine für mich wirklich hilfreichen Hinweise. Damit ist mein Problemchen gelöst.

MfG Jang
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: DB Ausgabe nach CSV

Beitrag von RobertG »

Hallo Jang,

ich habe das mit der vorherigen Erstellung der Tabelle jetzt auch einmal probiert. Klappt tatsächlich nicht.
Was beliebt ist also lediglich die Änderung der Einstellung direkt in der *.odb-Datei in der Unterdatei /database/properties.
textdb.encoding=ansi dann wohl für Windows, textdb.encoding=UTF-8 entsprechend für Linux.

Gruß

Robert
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: DB Ausgabe nach CSV

Beitrag von Hiker »

Hallo,
RobertG hat geschrieben: Was beliebt ist also lediglich die Änderung der Einstellung direkt in der *.odb-Datei in der Unterdatei /database/properties.
Ich habe mal (inspiriert durch diesen Beitrag https://forum.openoffice.org/en/forum/v ... 609ec1fde2 ) die folgenden Kommandos unter Libre Office 4.3.5.2
mit einer angemeldeten Testdatei samt Umlauten ausprobiert (Eingabe via Extras-SQL):

Code: Alles auswählen

SELECT * INTO TEXT "Aufcsv" FROM "Aufgaben"; 
set property "textdb.fs" '\semi';
set property  "textdb.encoding" 'ansi';
SELECT * INTO TEXT "Aufcsv2" FROM "Aufgaben"; 
Ergebnisse:
Die Änderung des Ausgabezeichensatzes und der Trennzeichen ist auch innerhalb der Benutzeroberfläche möglich.
LO scheint die Ausgabedatei offen zu halten und weigert sich einen zweiten Export in dieselbe Tabelle durchzuführen.
Ein Export in eine weitere Datei, die noch nicht existierte war aber problemlos.
Aufcsv2 ist mit Semikolon getrennt und enthält Umlaute, die zu Windows-Standarteinstellungen passen.
Aufcsv war dagegen Komma-getrennt und enthielt Fragezeichen für alle "seltsamen" Zeichen, also wohl ASCII-konform.

MfG, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: DB Ausgabe nach CSV

Beitrag von RobertG »

Hallo Jörn,

hast Recht, das Encoding kann auch geschrieben werden, bevor die Tabelle geschrieben wird.
Es reicht

Code: Alles auswählen

set property  "textdb.encoding" 'ansi';
um anschließend das Ergebnis in ansi-Encoding zu haben.
Werde ich auch noch ins Handbuch übernehmen.

Gruß

Robert
Antworten