From fe7ef94fe8a307858e31e7d0788fd2483851c666 Mon Sep 17 00:00:00 2001 From: Michael Wagner Date: Wed, 10 Jan 2024 12:13:15 +0100 Subject: [PATCH] pydev-s6 --- python/sv-merger/sv-merger.py | 95 +++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 python/sv-merger/sv-merger.py diff --git a/python/sv-merger/sv-merger.py b/python/sv-merger/sv-merger.py new file mode 100644 index 0000000..52c654e --- /dev/null +++ b/python/sv-merger/sv-merger.py @@ -0,0 +1,95 @@ +''' +Created on 10.01.2024 + +@author: sparky2021 +''' + +import sys + +if __name__ == '__main__': + pass + +numArgs = len(sys.argv) +if (numArgs != 4): + raise RuntimeError("usage: sv-merger EXPORT DELTA FIELD") + + +dh_export = open(sys.argv[1]) +dh_delta = open(sys.argv[2]) +dh_import = open("import.csv", "w") + +# Lese die Kopfzeile aus EXPORT +line = dh_export.readline().rstrip() +print(line, file=dh_import) +export_header = line.split(";") + +sv_pn_spalte = -1 +sv_such_spalte = -1 + +i = 0 +for kopf in export_header: + kopf = kopf[1:-1] + if kopf == 'Freifeldwert_1': + sv_pn_spalte = i + if kopf == sys.argv[3]: + sv_such_spalte = i + i += 1 + +if sv_pn_spalte == -1: + raise RuntimeError("S-Verein-Export enthält keine Partnernummer") +if sv_such_spalte == -1: + raise RuntimeError("S-Verein-Export enthält nicht das gewünschte Datenfeld "+sys.argv[3]) + +line = dh_delta.readline().rstrip() +delta_header = line.split(";") + +delta_pn_sp = -1 +delta_such_sp = -1 + +i = 0 +for kopf in delta_header: + if kopf == "Partnernummer": + delta_pn_sp = i + if kopf == sys.argv[3]: + delta_such_sp = i + i += 1 + +if delta_pn_sp == -1: + raise RuntimeError("Delta-Datei enthält keine Partnernummer") +if delta_such_sp == -1: + raise RuntimeError("Delta-Datei enthält nicht das gewünschte Datenfeld") + +delta = {} +for line in dh_delta: + if len(line.rstrip()): + # not a empty line + data = line.split(";") + delta[data[delta_pn_sp]] = data[delta_such_sp] + +for line in dh_export: + data = line.rstrip().split(";") + pn = data[sv_pn_spalte][1:-1] + if pn in delta: + if len(delta[pn]): + data[sv_such_spalte] = delta[pn] + print(";".join(data), file=dh_import) + +dh_export.close() +dh_delta.close() +dh_import.close() + +''' +Argumente: + +EXPORT: Export-Datei aus S-Verein + +DELTA: csv-Daten, die eingearbeitet werden sollen + +FIELD: Feld, das eingearbeitet werden soll, wenn + - Das Quellfeld nicht leer ist + - Sich der Wert von der EXPORT-Datei unterscheidet + +Die Synchronisation der Daten erfolgt anhand der Partnernummer. + +Das Ergebnis wird stets in die Datei import.csv geschrieben. +''' -- 2.20.1