AA_road_blau_sxc_641872.jpg

© Blau, sxc.hu

Ohne Umwege

Textdatei-basiertes Datenbanksystem Recutils

21.12.2011
Mit den Recutils verwalten Sie in textbasierten Datenbanken mit wenigen Shell-Kommandos umfangreiche Datensätze.

Dateibasierte Datenbanken bieten sich für viele Aufgaben an, bei denen relationale Datenbanksysteme mit einem zentralen Server überdimensioniert wären, wie einer Video- oder CD-Sammlung. Um hier die Vorteile einer Datenbank zu nutzen, bieten sich die Recutils [1] an. Die aktuelle Version erstellt bei Bedarf sogar verschlüsselte Datenbanken – das erweitert den Kreis der möglichen Einsatzszenarien nochmals erheblich.

Die Recutils implementieren eine Datenbank, die auf reinen Textdateien basiert. Die entsprechenden Dateien tragen in der Regel das Suffix .rec und heißen Recfiles. Um sie zu lesen oder zu schreiben, benötigen Sie keine besonderen Hilfsmittel. Bei Bedarf nutzen Sie einfach bewährte Werkzeuge, um zum Beispiel mit regulären Ausdrücken oder Awk- und Sed-Skripten zu arbeiten oder zeilenweise Datensätze auszuschneiden.

Das prädestiniert das System für den Einsatz in Skripten. Es fällt nicht schwer, eine Infrastruktur um eine derartige Datenbank zu stricken, die andere textbasierte Formate – etwa Wiki-Inhalte oder Quelltexte – konvertiert und in die Datenbank aufnimmt. Allerdings brauchen Sie für komplexe Aufgaben nicht erst eigne Tools zu schreiben, denn die Recutils bestehen aus einer Handvoll von Befehlen, um die Datenbank zu administrieren und zu benutzen. Für den Editor Emacs gibt es zudem einen speziellen Modus, um Recfiles zu bearbeiten.

Installation

Die aktuelle Version 1.4 der Recutils stammt vom 3. November 2011 und ist noch zu neu, um schon in den Repositories der meisten Distributionen gelandet zu sein. Allerdings finden sich im Build-Service von OpenSuse Pakete [2] für die Versionen 11.3, 11.4 und 12.1.

Für die Version 1.3 gibt es in Launchpad ein Repository [3]. Es stellt Pakete für die Versionen 11.10 ("Oneiric Ocelot") und die kommende LTS-Version 12.04 ("Precise Pangolin"). Auf der Seite findet sich auch ein Link zu einem weiteren Repository, dass Pakete für ältere Ubuntu-Versionen vorhält.

Die Homepage des Projekts verweist darüber hinaus auf fertig paketierte Versionen für weitere Distributionen.

Finden Sie kein Paket für das von Ihnen eingesetzte System, bleibt noch der Griff zum Compiler: Nach dem Laden und Auspacken des Recutils-Archivs erzeugen Sie via ./configure eine Konfiguration, die Sie mittels make übersetzen. Mittels make check überprüfen Sie diesen Schritt, bevor Sie mit make install die Software unter /usr/local/ installieren.

Mit make pdf erzeugen Sie die Dokumentation im PDF-Format, die viele weitere Informationen enthält. Falls die Bibliothek libmdb und die mdbtools samt Entwicklerpakete im System vorhanden sind, erzeugt das Setup zusätzlich den Befehl mdb2rec, mit dem sich Dateien aus Microsoft-Access-Datenbanken (MDB) in Recfiles umwandeln lassen.

Recfiles bearbeiten

Recfiles enthalten – wie andere Systeme auch – eine Datenbank, die sich aus Datensätzen ("Records") aufbaut. Datensätze enthalten Felder, bestehend aus einem Schlüssel (Feldnamen oder "Label") und dem dazugehörenden Wert ("Value"), der auch leer sein darf. Als Trennzeichen fungiert ein Doppelpunkt. Feldnamen stehen am Anfang einer Zeile und müssen mit einem Groß- oder Kleinbuchstaben beginnen, dem beliebig viele Buchstaben und Ziffern sowie Minuszeichen und Unterstriche folgen dürfen.

Bemerkenswerterweise dürfen Feldnamen mehrfach in einem Datensatz vorkommen. Feldnamen, die mit einem Prozentzeichen beginnen, haben eine besondere Funktion: Die dem Doppelpunkt folgenden Werte bis zum Zeilenende erkennen die Recutils als Schlüsselworte für die Datenbank.

Bei mehrzeiligen Werten maskiert ein Backslash den Zeilenumbruch. Ein Doppelkreuz (Hashmark) am Zeilenanfang leitet einen Kommentar ein, der bis zum Zeilenende reicht. Mittels Kommentarzeichen deaktivieren Sie auf einfache Weise bei Bedarf bestimmte Teile eines Recfiles, ohne sie direkt zu löschen.

In den folgenden Beispielen kommt eine Datenbank zum Einsatz, die im Recutils-Paket Version 1.3 als Beispiel enthalten ist, und die Sie unter /usr/share/doc/recutils/examples/movie-database/movies.rec finden. Einen Auszug aus der Datei zeigt Listing 1.

Die Datensätze beginnen mit dem Schlüsselwort Id, gefolgt von einer Nummer. Der Auszug zeigt, dass Datensätze weder numerisch sortiert in den Recfiles vorzuliegen brauchen, sondern sie dürfen in beliebiger Reihenfolge stehen. Allerdings dürfen die Datensätze nur nicht-leere Felder enthalten, woraus eine ganz unterschiedliche Länge der Einträge resultiert.

Listing 1

Id: 74
Title: Long zai jiang hu
Alternative_titles: Long zai jiang hu
Country: Hong Kong
Date: 1998
Director: Jing Wong
Genre: Action |  Crime |  Drama
Length: 112 min
Add_date: 01/05/2003
Audio: Cantonese (OGG)
Identifier: 472
Location: Box 1
Media: CD
Amount_of_Media: 1
Rating: 6
Subtitles: English
Video_format: DX50
Viewed: 1
Borrower: none
Favourite: 0

Die Befehle

Wie bereits erwähnt, verbirgt sich hinter den Recutils nicht ein spezielles Programm, sondern eine Reihe von Shell-Befehlen (Tabelle "Kommandos"), für jeweils genau abgegrenzte Aufgaben. So gibt recinf grundsätzliche Informationen über die Datenbank und die enthaltene Datensatztypen aus.

Die Option -t Typ erlaubt, das Bearbeiten auf einen bestimmten Typ einzuschränken, mit -d erhalten Sie eine Übersicht der vorhandenen Typen sowie weitere Informationen. Ähnliche Optionen bieten auch die meisten anderen Befehle.

Kommandos

Befehl Funktion
recinf zeigt allgemeine Informationen über Recfiles
recsel gibt Datensätze aus, implementiert die Suchfunktion
recins fügt neue Datensätze in ein Recfile ein
recdel löscht Datensätze aus Recfiles
recset manipuliert Datensätze
recfix prüft und repariert Recfiles
recfmt formatiert Ausgaben anhand von Vorlagen
csv2rec wandelt CSV-Files in Recfiles um
rec2csv wandelt Recfiles in CSV-Files um
mdb2rec konvertiert MDB-Files (MS-Access) in Recfiles

Der Befehl recins dient dem Einfügen neuer Datensätze in die Datenbank. Wieder legt -t den Typ fest, während -f Feldname und -v Wert den Datensatz definieren. Beide dürfen dabei mehrfach auftreten (Listing 2, Zeile 1).

Listing 2

$ recins -t movies -f Title -v "Erleuchtung garantiert" -f Audio -v "German" -f Genre -v "Komödie" movies.rec
$ recins -t movies -f Year -v 2000 -f Regie -v "Doris Dörrie" movies.rec

Das Beispiel ergänzt die geniale Komödie von Doris Dörrie in der Film-Datenbank. Durch -t movies wird dieser Eintrag als letzter eingefügt. Ohne diese Einschränkung schreibt recins den neuen Eintrag an den Anfang eines Recfiles. Nun fehlen noch die Angaben zur Regie und zum Erscheinungsjahr (Listing 2, Zeile 2). Beide Felder gibt es bisher noch nicht in der Datenbank, recins legt sie ohne Probleme an, allerdings nur für den aktuellen Datensatz (Listing 3)

Listing 3

...
Viewed: 0
Title: Erleuchtung garantiert
Audio: German
Genre: Komödie
Year: 2000
Regie: Doris Dörrie
...

Analog zu recins löscht recdel Datensätze aus Recfiles. Wieder definiert -t den Datensatztyp und -e ein Muster zum Beschreiben der gewünschten Datensätze.

Das Kommando recset dient dem Bearbeiten von Feldern vorhandener Datensätze. Auch hier wählen Sie zunächst die gewünschten Datensätze aus (-e) und erledigen dann die mit zusätzlichen Optionen definierten Veränderungen. Die Option -i veranlasst recset, Datensätze ohne Berücksichtigung von Groß-/Kleinschreibung zu finden, -t Typ beschränkt das auf die angegebenen Typen.

Die bearbeiteten Felder definiert das Argument von -f. Als Aktion gibt es mehrere Möglichkeiten: -s Wert schreibt einen neuen Wert in das Feld ("set"), -a Ergänzung ergänzt ("add"), -S Wert setzt den Wert und erzeugt das Feld, falls es noch nicht besteht. -r Name benennt das Feld um ("rename"), -d löscht es; -c kommentiert es aus.

Der wahrscheinlich wichtigste Befehl der Recutils ist recsel, mit dem Sie die Datenbank abfragen. Neben den oben beschriebenen Optionen (-t, -d) besonders wichtig sind noch -s Passwort für verschlüsselte Datenbanken sowie -S Feldname: Diese Angabe sorgt bei umfangreicheren Ausgaben für Übersichtlichkeit, indem die Datensätze nach dem angegebenen Kriterium sortiert erscheinen.

Die im Argument von -e übergebenen Abfragekriterien dürfen neben der Tilde und dem Gleichheitszeichen noch numerische (<, >, <=, >=, !=) und logische Operatoren (&&, ||, !) sowie Klammern zum Gruppierung enthalten.

Eine speziell formatierte Ausgabe ermöglicht recfmt. Der Befehl verwendet ein Template, um die Ausgabe zu erzeugen, und dient in der Regel als als Filter in einer Pipe. In dieser Schablone erscheinen die Werte für die zwischen doppelten geschweiften Klammern angegebenen Feldnamen.

Normalerweise gehen die textbasierten Recfiles kaum kaputt. Sollte das doch einmal der Fall sein, hilft recfix sie zu überprüfen (--check) und zu reparieren. Mittels --sort geben Sie die Datensätze zum Überprüfen sortiert aus. Mittels rec2csv konvertieren Sie Datenbanken in das weit verbreitete CSV-Format, das unter anderem Tabellenkalkulationen beherrschen. Umgekehrt wandelt csv2rec dieses Format in Recfiles um. Eine Umwandeln von Access-Datenbanken (MDB-Files) in Recfiles ermöglicht das bereits erwähnte mdb2rec.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare

Infos zur Publikation

title_2014_08

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...
Öhm - wozu Benutzername, wenn man dann hier mit Klarnamen angezeigt wird?
Thomas Kallay, 03.07.2014 20:30, 1 Antworten
Hallo Team von Linux-Community, kleine Zwischenfrage: warum muß man beim Registrieren einen Us...
openSUSE 13.1 - Login-Problem wg. Fehler im Intel-Grafiktreiber?
Thomas Kallay, 03.07.2014 20:26, 8 Antworten
Hallo Linux-Community, habe hier ein sogenanntes Hybrid-Notebook laufen, mit einer Intel-HD460...
Fernwartung für Linux?
Alfred Böllmann, 20.06.2014 15:30, 7 Antworten
Hi liebe Linux-Freunde, bin beim klassischen Probleme googeln auf www.expertiger.de gestoßen, ei...