Texttabelle mit einer internen HSQLDB FAQ-Base

From The Document Foundation Wiki
< Faq‎ | Base‎ | 143
Jump to: navigation, search

Wie kann ich eine Texttabelle mit der internen HSQLDB nutzen?

Zuerst einmal muss eine Texttabelle vorhanden sein:

ID,Name,Geburtsdatum

1,Bob the Dog,1967-03-14

2,Käthe Bäcker,1983-12-24

3,"Groß, Willi",2003-07-01

Diese Texttabelle hat den Namen "Geburtstage.csv"

Der Zugriff zu einer Texttabelle kann nicht über die grafische Benutzeroberfläche erstellt werden. Stattdessen wird über Extras > SQL eine Texttabelle erstellt. Die Felder in der Texttabelle müssen dem entsprechen, was die Texttabelle in der entsprechenden Reihenfolge liefert. So muss

  • das Feld ID unverwechselbare Ganzzahlen,
  • das Feld Name in doppelte Anführungszeichen gesetzt werden, wenn es ein Komma enthält und
  • das Feld Geburtsdatum ein Datum in der Schreibweise YYYY-MM-DD enthalten.

CREATE TEXT TABLE "Geburtstage" ("ID" INT GENERATED BY DEFAULT AS IDENTITY, "Name" VARCHAR(50) NOT NULL, "Geburtsdatum" DATE );

Die Texttabelle wird als Tabelle mit automatisch hochzählendem Primärschlüssel erstellt. Anschließend wird die Texttabelle, die sich im gleichen Verzeichnis wie die Datenbank befindet, eingebunden:

SET TABLE "Geburtstage" SOURCE "Geburtstage.csv;ignore_first=true;encoding=UTF-8";

Es erfolgt die Verbindung zu der Texttabelle. Die erste Zeile wird ignoriert, da sie in der Vorlage die Spaltenbeschriftungen enthält. Damit auch Sonderzeichen einwandfrei dargestellt werden, wird als Zeichencodierung UTF-8 gewählt.

Damit die Tabelle auch in Base sofort sichtbar wird muss anschließend Ansicht > Tabellen aktualisieren gewählt werden.

Die Optionen für die Tabelle können hier nachgeschlagen werden: http://hsqldb.org/doc/guide/ch09.html#set_table_source-section

Die Nutzung von Texttabellen unterliegt folgenden Nachteilen:

  • Die Texttabelle kann gleichzeitig auch von externen Textprogrammen oder Tabellenkalkulationen geöffnet und bearbeitet werden. Datenverlust ist dann nicht auszuschließen.
  • Änderungen an bereits geschriebenen Datensätzen führen dazu, dass die entsprechende Zeile in der Originaldatei geleert wird und in der neuen Fassung an den Schluss der Tabelle

angefügt wird. Wird z.B. in der obigen Datei der Datensatz 2 bearbeitet, so wird der Datensatz neue am Ende der Texttabelle angefügt. In der Textdatei erscheint dann eine leere Zeile. Die Zeilenreihenfolge entspricht nicht mehr der ursprünglichen Reihenfolge. Die Ansicht in Base zeigt allerdings weiter die korrekte Reihenfolge und unterdrückt diese Leerzeilen.