Catmandu #
Kernkonzepte #
- Items: Basiseinheit der Datenprozessierung in Catmandu. Kann in einer Reihe von Formaten sein, wobei “Item” je nach Format einen anderen Umfang hat (bspw. eine Textzeile in einem Text-Format, ein Record in einer MARC-Datei etc.). Das Catmandu-eigene Format ist ähnlich wie JSON strukturiert.
- Importers: Werden gebraucht, um Items zu lesen. Der Name von Importers muss dem
convert
-Befehl als erstes Argument mitgegeben werden. Mit Hilfe der--type
-Option kann ein Format spezifiziert werden, bspw.catmandu convert MARC --type XML < marc.xml
odercatmandu convert MARC --type ALEPHSEQ < marc.txt
. - Exporters: Werden gebraucht, um Items zu schreiben. Der Name von Exporters muss dem
to
-Befehl als erstes Argument mitgegeben werden. - Stores: Datenbanken
- Fixes: Transformieren / mappen Daten
Befehle #
convert
: Konvertiert ein Format in ein anderes, oder lädt Daten aus dem Internetimport
: Importiert Daten in eine Datenbankexport
: Exportiert Daten aus Datenbankdelete
: Löscht Daten aus Datenbank
Konfigurationsdatei #
Konfigurationsdateien müssen im gleichen Verzeichnis liegen, wo der catmandu
-Befehl ausgeführt wird.
Bsp.: |
---|
importer: |
ghent: |
package: OAI |
options: |
url: http://biblio.ugent.be |
set: public |
handler: marcxml |
metadataPrefix: marc21 |
store: |
ghentdb: |
package: MongoDB |
options: |
database_name: oai_data |
default_bag: data |
Anschliessend kann bspw. folgendermassen auf die Konfigurationen zugegriffen werden: catmandu convert ghent # Extraktion aus entfernter OAI-Schnittstelle
catmandu import ghent to ghentdb # Dito und Import in Mongo-DB
catmandu export ghentdb # Dump aus Mongo-DB
JSON Paths #
Array: <key>.<index 0-...>
Inner Object: <key>.<key>
add_field(foo.$append,test)
add_field(foo.0,test)
Hängt jeweils ein neuer Wert in einem Array mit Key foo an den Datensatz an, zuert mit einer impliziten, dann mit einer expliziten Indexangabe. Wird ein Element in einem Array mit expliziten Index hinzugefügt, dann werden tiefere, noch nicht vorhandene Index-Wert-Paare mit tieferem Index mit leeren Werten erzeugt (in YAML repräsentiert durch einen - )
Werte, die nicht apostrophiert werden, werden von Catmandu als potentielle JSON-Paths behandelt!
Fix script #
Kleinere Fix-Skripte können direkt in der Kommandozeile geschrieben werden. Dazu müssen die Anweisungen in der fix()
-Funktion abgelegt werden.
marc_map #
Substring-Extraktion, bspw. Position 7-10 von Feld 008, und Binding in Feld year:
marc_map(008/07-10,year)
do visitor()
wendet eine bestimmte Funktion auf alle Felder in allen Records an.
Hilfe #
- Kurzhilfe:
catmandu --help
oder spezifischercatmandu <command> --help
- Ausführliche Hilfe:
catmandu help
oder spezifischercatmandu help <command>
bzw.catmandu help <command> <fileformat>[[::<spec_type>]]