12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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()
|