-
Notifications
You must be signed in to change notification settings - Fork 0
CLI
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.0 —
pip install libopenschichtplaner5bringt dassp5lib-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
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/DatenTabelle Records Felder
5ABSEN.DBF ... ..
5BOOK.DBF ... ..
…
Gesamt: NN Tabellen, NNNN Records
Schichtplaner5-Build: NNN
Tabellen mit unlesbarem Header werden markiert statt das Kommando abzubrechen.
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.dbfund5EMPL.DBFmeinen dieselbe Datei. -
Binärfelder (z. B.
DIGEST,CREATIME,UUID) werden als Hex-String dargestellt. -
--limit Nbegrenzt die Ausgabe auf die ersten N Records.
Liest alle Tabellen vollständig und meldet Probleme:
sp5lib validate /pfad/zu/DatenOK 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.
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/datenbankDie 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 //
|
| 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 |
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 /dataBuild-Anleitung für das Image: Installation.
Home — Startseite
- Installation — PyPI, Git, Docker
-
CLI — Das
sp5lib-Kommando
- Datenbankformat — DBF/CDX aus Nutzersicht
- Berechnungen — Soll/Ist, Konten, Zuschläge
-
ORM-und-Sync — SQLAlchemy-Spiegel &
sync_all
-
API-Referenz —
SP5Database& Module
- Entwicklung — Setup, Tests, Repo-Verbund