Skip to content
Matthias Schabhüttl edited this page Jun 12, 2026 · 2 revisions

CLI — das sp5lib-Kommando

Das Paket installiert ein Konsolenkommando sp5lib für Standalone-Arbeit auf einem Schichtplaner5-Datenverzeichnis (dem Ordner mit den 5*.DBF-Dateien) — ganz ohne die Web-Anwendung.

Verfügbar ab Version 1.8.0pip install libopenschichtplaner5 bringt das sp5lib-Kommando mit.

sp5lib info     /pfad/zu/Daten
sp5lib dump     /pfad/zu/Daten 5EMPL [--json|--csv] [--limit N]
sp5lib validate /pfad/zu/Daten
sp5lib sync     /pfad/zu/Daten --target sqlite:/pfad/sp5.db
sp5lib sync     /pfad/zu/Daten --target postgres://user:pw@host:5432/db

sp5lib info — Tabellenübersicht

Listet alle .DBF-Tabellen des Verzeichnisses mit Record- und Feldanzahl, dazu Summen und (falls die Tabelle 5BUILD.DBF vorhanden ist) den Schichtplaner5-Build der Daten:

sp5lib info /pfad/zu/Daten
Tabelle           Records  Felder
5ABSEN.DBF            ...      ..
5BOOK.DBF             ...      ..
…

Gesamt: NN Tabellen, NNNN Records
Schichtplaner5-Build: NNN

Tabellen mit unlesbarem Header werden markiert statt das Kommando abzubrechen.

sp5lib dump — Tabelleninhalt ausgeben

Gibt eine Tabelle als JSON (Default) oder CSV aus:

sp5lib dump /pfad/zu/Daten 5EMPL --limit 5        # JSON, erste 5 Records
sp5lib dump /pfad/zu/Daten EMPL --csv > empl.csv  # CSV in Datei
  • Tolerante Tabellennamen: EMPL, 5EMPL, 5empl.dbf und 5EMPL.DBF meinen dieselbe Datei.
  • Binärfelder (z. B. DIGEST, CREATIME, UUID) werden als Hex-String dargestellt.
  • --limit N begrenzt die Ausgabe auf die ersten N Records.

sp5lib validate — Datenbestand prüfen

Liest alle Tabellen vollständig und meldet Probleme:

sp5lib validate /pfad/zu/Daten
OK       5ABSEN.DBF (NNN Records)
FEHLER   5XXXX.DBF: Header nicht lesbar
ENCODING 5YYYY.DBF: NN Feldwerte mit Ersatzzeichen (U+FFFD)
…

Geprüft werden lesbare Header, dekodierbare Feldnamen und Feldwerte ohne Unicode-Ersatzzeichen. Bei Befunden ist der Exit-Code ≠ 0 — damit eignet sich das Kommando auch für Skripte und CI-Checks.

sp5lib sync — DBF nach SQLite/PostgreSQL

Spiegelt das Datenverzeichnis über den ORM-Sync (ORM-und-Sync) in eine SQL-Datenbank. Das Schema wird automatisch angelegt, anschließend werden 19 Tabellen per Upsert übertragen:

# nach SQLite (Datei wird angelegt):
sp5lib sync /pfad/zu/Daten --target sqlite:/tmp/sp5.db

# nach PostgreSQL:
sp5lib sync /pfad/zu/Daten --target postgres://user:pw@host:5432/datenbank

Die Ausgabe listet die übertragenen Record-Zahlen je Tabelle; ein Passwort in der Ziel-URL wird in der Ausgabe maskiert. Akzeptierte Target-Formen:

Form Beispiel
sqlite:PFAD sqlite:/tmp/sp5.db (relativer Pfad wird absolut aufgelöst)
postgres://… / postgresql://… postgres://user:pw@host:5432/db
postgres:user:pw@host/db Kurzform ohne //

Exit-Codes

Code Bedeutung
0 Erfolg (bei validate: keine Befunde)
1 Fachlicher Fehler — Tabelle nicht gefunden, Validierungsbefunde, Sync fehlgeschlagen
2 Aufruffehler — ungültiges --target, db_dir ist kein Verzeichnis

Verwendung über Docker

Das CLI ist zugleich die Default-Stage des Dockerfile (schlankes Non-Root-Image, ENTRYPOINT ["sp5lib"]):

docker run --rm -v /pfad/zu/SP5/Daten:/data:ro libopenschichtplaner5 info /data
docker run --rm -v /pfad/zu/SP5/Daten:/data:ro libopenschichtplaner5 validate /data
docker run --rm -v /pfad/zu/SP5/Daten:/data -v "$PWD":/out \
  libopenschichtplaner5 sync /data --target sqlite:/out/sp5.db

# über Compose (Service "tools"):
SP5_DB_DIR=/pfad/zu/SP5/Daten docker compose run --rm tools info /data

Build-Anleitung für das Image: Installation.

libopenschichtplaner5 v1.7.0

Home — Startseite


Einstieg

Konzepte

Referenz

Mitwirken


Verwandte Wikis

Links

Clone this wiki locally