10 if __name__ == '__main__':
18 numArgs = len(sys.argv)
20 raise RuntimeError("usage: sv-merger EXPORT DELTA FIELD")
23 dh_export = open(sys.argv[1])
24 dh_delta = open(sys.argv[2])
25 dh_import = open("import.csv", "w")
27 # Lese die Kopfzeile aus EXPORT
28 line = dh_export.readline().rstrip()
29 print(line, file=dh_import)
30 export_header = line.split(";")
36 for kopf in export_header:
39 if kopf == 'Freifeldwert_1':
41 if kopf == sys.argv[3]:
45 if sv_pn_spalte == -1:
46 raise RuntimeError("S-Verein-Export enthält keine Partnernummer")
47 if sv_such_spalte == -1:
48 raise RuntimeError("S-Verein-Export enthält nicht das gewünschte Datenfeld "+sys.argv[3])
50 line = dh_delta.readline().rstrip()
51 delta_header = line.split(",")
57 for kopf in delta_header:
59 if rd_opt_qval(kopf) == "Partnernummer":
61 if kopf == sys.argv[3]:
66 raise RuntimeError("Delta-Datei enthält keine Partnernummer")
67 if delta_such_sp == -1:
68 raise RuntimeError("Delta-Datei enthält nicht das gewünschte Datenfeld")
72 if len(line.rstrip()):
74 data = line.split(";")
75 if len(data[delta_pn_sp]) == 0:
76 print("Diese Zeile hat keine Migliedsnummer: ", line)
78 delta[int(data[delta_pn_sp])] = data[delta_such_sp]
80 for line in dh_export:
81 data = line.rstrip().split(";")
82 pn = data[sv_pn_spalte]
84 print("Diese Zeile (export) hat keine Migliedsnummer: ", line)
91 if data[sv_such_spalte] != delta[pn]:
92 data[sv_such_spalte] = delta[pn]
93 print(";".join(data), file=dh_import)
95 print(f"{pn} fehlt in delta-Datei")
104 EXPORT: Export-Datei aus S-Verein
106 DELTA: csv-Daten, die eingearbeitet werden sollen
108 FIELD: Feld, das eingearbeitet werden soll, wenn
109 - Das Quellfeld nicht leer ist
110 - Sich der Wert von der EXPORT-Datei unterscheidet
112 Die Synchronisation der Daten erfolgt anhand der Partnernummer.
114 Das Ergebnis wird stets in die Datei import.csv geschrieben.