diff --git a/tt/STE.csv b/tt/STE.csv index 84665b2..4eba4d0 100644 --- a/tt/STE.csv +++ b/tt/STE.csv @@ -18,3 +18,4 @@ date;from;to;hours;category;name 2023-02-04;22:00;01:00;3;database;Mitglieder 2023-02-06;11:00;13:00;2;database;Mitglieder/Kataster 2023-02-08;22:00;23:30;1.5;database;Flächenbindungen +2023-02-09;17:00;18:00;1;export;wgexport.py diff --git a/wgmaster/wgexport.py b/wgmaster/wgexport.py index 96155e3..4c2bf57 100644 --- a/wgmaster/wgexport.py +++ b/wgmaster/wgexport.py @@ -2,11 +2,13 @@ import argparse import datetime +import os +import shutil import decimal import pypyodbc -def convert(a) -> str: +def convert(n, a) -> str: if type(a) == str: return f'"{a}"' elif type(a) == bool: @@ -26,9 +28,13 @@ def convert(a) -> str: if __name__ == '__main__': parser = argparse.ArgumentParser() + parser.add_argument('-o', '--output', default='tables') parser.add_argument('wgdaten') args = parser.parse_args() + shutil.rmtree(args.output) + os.makedirs(args.output, exist_ok=True) + pypyodbc.lowercase = False conn = pypyodbc.connect(f"Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};Dbq={args.wgdaten};") cur = conn.cursor() @@ -38,17 +44,19 @@ if __name__ == '__main__': tbls = tbls.fetchall() for file, _, t_name, t_type, _ in tbls: print(t_name) + cur.execute(f"SELECT TOP 1 * FROM {t_name};") desc = [(t[0], t[1]) for t in cur.description] cur.fetchall() print(desc) + cur.execute(f"SELECT * FROM {t_name} ORDER BY `{desc[0][0]}`;") cols = [t[0] for t in cur.description] - with open(f'tables/{t_name}.csv', 'wb+') as f: + with open(f'{args.output}/{t_name}.csv', 'wb+') as f: f.write((';'.join(cols) + '\n').encode('utf-8')) for row in cur: - f.write((';'.join([convert(a) for a in row]) + '\n').encode('utf-8')) + f.write((';'.join([convert(n, a) for n, a in zip(cols, row)]) + '\n').encode('utf-8')) finally: cur.close() conn.close()