diff --git a/wgmaster/wgexport.py b/wgmaster/wgexport.py new file mode 100644 index 0000000..7852605 --- /dev/null +++ b/wgmaster/wgexport.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- + +import argparse +import pypyodbc + +#pypyodbc.lowercase = False + + +def convert(a) -> str: + if type(a) == str: + return f'"{a}"' + elif type(a) == bool: + return "T" if a else "F" + elif a is None: + return "" + else: + return str(a) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('wgdaten') + args = parser.parse_args() + + conn = pypyodbc.connect( + r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" + + f"Dbq={args.wgdaten};") + + cur = conn.cursor() + + try: + tbls = cur.tables(tableType='TABLE') + tbls = tbls.fetchall() + for file, _, t_name, t_type, _ in tbls: + print(t_name) + cur.execute(f"SELECT * FROM {t_name};") + cols = [t[0] for t in cur.description] + + with open(f'tables/{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')) + finally: + cur.close() + conn.close()