from pathlib import Path import subprocess cfg = { 'schema': 'temp', 'scripts_dir': 'E:\\GlobalCube\\Tasks\\scripts', 'query_dir': 'E:\\GlobalCube\\System\\NAVISION\\SQL\\exec', } target_tables = { 'account2': 'GEBOS_Account', 'activity2': 'GEBOS_Activity', 'activitytype2': 'GEBOS_Activity_Type', 'costcenter2': 'GEBOS_Cost_Center', 'department2': 'GEBOS_Department', 'employee2': 'GEBOS_Employee', 'employeeaccount2': 'GEBOS_Employee_Account', 'employmenttype2': 'GEBOS_Employment_Type', 'timemodel2': 'GEBOS_Time_Model', 'timetracking2': 'GEBOS_Time_Tracking' } def task(args): return subprocess.Popen(args, stdout=subprocess.DEVNULL).wait() def gebos_import(csv_file, target_table): bulkcopy = str(Path(cfg['scripts_dir']) / 'bcp_import.bat') sqlquery = str(Path(cfg['scripts_dir']) / 'sqlquery.bat') sqlexec = str(Path(cfg['scripts_dir']) / 'sqlexec.bat') query_file = target_table + '.sql' task(f"{sqlquery} \"TRUNCATE TABLE [{cfg['schema']}].[{target_table}]\" ") task(f"{bulkcopy} [{cfg['schema']}].[{target_table}] \"{csv_file}\" ") task(f"{sqlexec} {query_file} \"{csv_file}\" ") def import_dir(base_dir=None): if base_dir is None: base_dir = 'E:\\GEBOS\\staging' for csv_file in Path(base_dir).glob('*.csv'): print(csv_file.name) for key, table in target_tables.items(): if not csv_file.name.startswith(key): continue gebos_import(str(csv_file), table) csv_file.unlink() if __name__ == '__main__': import_dir()