... und dann hätte ich gern eine Datenbank ... (H2-Database)

Donnerstag 07 Juni 2012 um 15:30

Bei meiner Tätigkeit habe ich es auch immer wieder mit größeren Listen von Daten unterschiedlichster Art zu tun. Normalerweise eignet sich Microsoft Excel dafür recht gut und ist das erste Mittel der Wahl. Excel kann die meisten Dateiformate einlesen. In der Version bis Excel 2003 besteht zwar die Beschränkung auf 65536 Zeilen, aber das reicht für das Arbeiten mit Daten, mit denen ich hier in der Regel zu tun habe, aus.

Aber diese Listen haben auch schon mal 20 und mehr Spalten und 20.000 Datenreihen, so dass trotz eines großen Bildschirms die Arbeit damit schnell unübersichtlich wird. In Verbindung mit der intensiven Nutzung verschiedenster Filter und des Autofilters kommt es zu Flüchtigkeitsfehlern, die ich gern vermeiden würde.

In solchen Momenten wünscht man sich die Möglichkeiten die eine Datenbank und SQL bieten, insbesondere um bspw. doppelte Datensätze zu filtern, eine der Listen gegen eine andere Liste zu filtern, zu sortieren, gruppieren, zählen und alle diese Dinge, die insbesondere auch zur Kontrolle von Daten, deren Strukturen und Zusammenhänge benötigt werden.

Warum dann nicht Microsoft Access?

Das wäre der logische Weg, insbesondere wenn man sich in einer reinen Microsoft-Umgebung befindet. Mit Microsoft Access kann man Exceldateien importieren. Deshalb habe ich es mir angeschaut. Ich habe dann aber leider feststellen müssen, dass es für meine Zwecke nicht gut brauchbar ist.

Wichtigstes Ausschlusskriterium war, dass ich zu Hause kein Access zur Verfügung hatte (und ich wollte es mir auch nicht kaufen!), denn ich nutze nur noch Linux auf meinem(n) Rechner(n).  Ich hätte daher alle Tests mit dieser Umgebung nur auf der Arbeitstelle erledigen könne. Und dort bleibt einfach nicht die Zeit dafür. So etwas mache ich dann lieber zu Hause mit ein bisschen Ruhe.

Außerdem bin ich durch die Arbeit mit Linux an der Kommandozeile geprägt. Es gefällt mir besonderes, dass man schnell mit wenigen Schlüsselworten selbst umfangreiche Dinge erledigen kann. In dieser Art würde ich auch gern bei der Bearbeitung von Datenbank vorgehen können.

Bei Access handelt es sich aber eher um ein Programm, dass die Arbeit mit Datenbanken ohne genauere Kenntnisse von SQL darstellen will. Und daher ist es aus meiner Sicht in der Bedienung nicht so schnell. Bspw. musste nach einen Import immer in den Bereich Abfragen gewechselt werden, um dort eine Abfrage zusammen zu klicken und die Suchkritereien festzulegen. Das Ergebnis konnte dann durch Hin- und Herschalten zwischen Entwurfsansicht und Tabellenansicht kontrolliert werden. Aber es gibt Keine SQL-Syntax-Unterstützung, und für jedes Statement war eine eine neue Anfrage anzuklicken. Mit Access bekam ich nach einiger Zeit zwar Ergebnisse, aber es war alles etwas zäh, einfach vom Gefühl her.

Ich wollte etwas Einfaches, dass schnell startet, mir die Möglichkeit bietet mit Scripts und Programmen Automatismen zu generieren, die insbesondere die immer wiederkehrenden Aufgaben vereinfacht und automatisiert. Auch um Fehler zu vermeinden, die durch manueller Eingabe schnell entstehen können.

Außerdem etwas was ich auf beiden Plattformen nutzen kann, auch um zu Hause mal schnell etwas ausprobieren zu können. Und zu guter Letzt, etwas das kostenfrei ist. Das war meine Ausgangssituation.

Der Weg zu H2

Mit grafischen SQL-Tools wie SQL Developer von Oracle oder Toad von Quest Software hatte ich bereits gearbeitet. Statt direkt an der Kommandozeile (was unter Windows auch immer nicht so produktiv ist) wollte ich daher schon grafisches Programm nutzen, aber eines mit einem Eingabefenster mit SQL-Syntax-Unterstützung, so wie ich es von den genannten Tools her auch kannte.

Ich habe mir dann zunächst einige dieser grafischen Benutzertools für SQL angeschaut und festgestellt, dass die meisten Programme aus diesem Bereich in Java geschrieben sind. Das hat den sehr angenehmen Nebeneffekt, dass diese Programme die JDBC-Architektur (Java Data Base Connectivity) unterstützen. Man kann mit diesen Tools also meist eine Vielzahl von unterschiedlichen Datenbanken nutzen, halt alle, für die es einen JDBC-Treiber gibt. Und sie laufen halt überall dort wo auch Java verfügbar ist, somit auch unter Windows und Linux.

Eines der populärsten Programme in diesem Bereich hatte es miri schnell angetan. Das Programm SQL-Workbench/J!

Um so mehr ich mich damit beschäftigte, um so besser gefiel es mir. Die Syntax-Unterstützung ist ziemlich gut. Klammern werden angezeigt, Schlüsselwörter in unterschiedlichen Farben, und es gibt einen Formatierungsmechanismus, der einem den Quelltext in eine lesbare Form bringt.

Die Unterstützung zum Anlegen von Tabellen, Index, etc. ist schlicht aber ausreichen. Nutzen lässt sich dafür aber auch das SQL-Editor-Fenster. Stellte sich jetzt nur noch die Frage, welche Datenbank?

Welche Datenbank-Engine war mir eigentlich egal. Aber ich stellte fest, dass es mit den beschränkten Möglichkeiten auf meinem Arbeitsplatzrechner nicht so ohne weiteres möglich ist, ein Datenbank-Server-Dienst laufen zu lassen. Außerdem würde es für meine Zwecke ja auch reichen eine Single-User-Datenbank zu benutzen. Also eine Datenbank, die nur mit einem lokalen Benutzer interagiert. Ich experimentierte ein wenig mit der Derby-Datenbank, die bei Java mittlerweile mitgeliefert wird, und mit SQLLite. Das ist zwar keine Java-Datenbank, es gibt aber einen brauchbaren JDBC-Treiber. Und damit war SQL-Lite auch gut benutzbar.

Bei den Recherchen landete ich schließlich auf der Webseite der H2 - Database. Und alles was ich dort las erfüllte meine Anforderungen und Erwartungen.

Die H2 Datenbank ist eine reine Java Datenbank, die in Form eines Jar-Archivs geliefert wird. Die Datenbank ist Open Source und läuft überall dort, wo Java verfügbar ist. Der JDBC-Treiber ist im Jar integriert. Es bedarf also nur dieser Jar-Datei. In Verbindung mit der SQL Workbench/J hatte ich nun genau das Werkzeug dass ich sucht.

SQL-Workbench mit H2 Datenbank

Mittlerweile arbeite ich jetzt etwas mehr als ein Jahr mit der Datenbank und sie ist aus meinem täglichen Arbeiten nicht mehr wegzudenken. Ich benutzer Sie auch mittlerweile für ein paar kleine Java-Programme, die ich damit geschrieben habe.

Ich werde ich den nächsten Tagen über ein paar praktische Erfahrungen damit berichten und das ein oder andere Beispiel beschreiben.

drei Kommentare

Toni

Toni - 26-11-’13 08:58

Hi,

sehr interessanter Beitrag, genau das habe ich auch vor. Portable, lokale Datenbank, die leistungsfähig ist und auch SQL Frontend-Tool hat.

Meine Frage wäre nun, ob Du es mal probiert hast, Daten aus dieser Datenbank nach Excel zu exportieren?

Viele Grüße,
Toni

Andreas

Andreas - 11-12-’13 15:00

Hallo Toni,

meistens habe ich über die Datenbank aus einer größeren Menge ein Ergebnis selektiert. Das kann man dann sehr elegant durch Rechtsklick in der Ergebnistabelle in den Zwischenspeicher kopieren, und in Excel einfügen.

Das Ergebnis lässt sich aber genauso einfach in eine CSVatei exportieren, die von Excel problemlos eingelesen wird.

Auch die Übernahme nach Word funktioniert gut. Zu Hause habe ich kein Windows mehr, nutze dort Libre-Office unter Linux, und auch dort funktionieren beide Wege problemlos.

Für ein Java-Programm, dass ebenfalls einen Excel-Export vorsieht, nutze ich neben der Datenbank das jxl.jar (zu finden unter http://jexcelapi.sourceforge.net/ ). Damit fülle ich eine Excel-2003 – Vorlage mit den aus der Datenbank selektierten Werten auf. Wenn Du so etwas suchst kann ich Dir die dazu verwendeten Java-Klassen zur Verfügung stellen. Dazu bitte eine PM an andreas(at)korzinowski.de

Best Regards

Einer oder mehrere Kommentare sind noch nicht freigeschaltet.

Schreibe einen Kommentar

required
Hier Klicken zum Verändern

Auf dieser Seite werden die Kommentare moderiert.
Das bedeutet, dass die Kommentare erst dann veröffentlicht werden, wenn sie freigeschaltet wurden.

Persönliche Informationen speichern?
Hinweis: Alle HTML-Tags außer <b> und <i> werden aus Deinem Kommentar entfernt. URLs oder Mailadressen werden automatisch umgewandelt.