ift_import.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from pathlib import Path
  2. import subprocess
  3. cfg = {
  4. 'schema': 'temp',
  5. 'scripts_dir': 'C:/GlobalCube/Tasks/scripts',
  6. 'query_dir': 'C:/GlobalCube/System/NAVISION/SQL/exec',
  7. }
  8. target_tables = {
  9. 'A': 'IFT_Actuals',
  10. 'B': 'IFT_Budget',
  11. 'C': 'IFT_Commitment',
  12. 'K': 'IFT_Controlling_Documents',
  13. 'P': 'IFT_Plan'
  14. }
  15. def task(args):
  16. print(args)
  17. # return subprocess.Popen(args, stdout=subprocess.DEVNULL).wait()
  18. return 0
  19. def ift_import(csv_file, target_table):
  20. bulkcopy = str(Path(cfg['scripts_dir']) / 'bulkcopy_import.bat')
  21. sqlquery = str(Path(cfg['scripts_dir']) / 'sqlquery.bat')
  22. sqlexec = str(Path(cfg['scripts_dir']) / 'sqlexec.bat')
  23. query_file = str(Path(cfg['query_dir']) / (target_table + '.sql'))
  24. task(f"{sqlquery} \"TRUNCATE TABLE [{cfg['schema']}].[{target_table}]\" ")
  25. task(f"{bulkcopy} [{cfg['schema']}].[{target_table}] \"{csv_file}\" ")
  26. task(f"{sqlexec} {query_file}")
  27. def import_dir(base_dir=None):
  28. if base_dir is None:
  29. base_dir = '/home/robert/projekte/python/BMW_Wien/IFT/prod_csv'
  30. for csv_file in Path(base_dir).glob('*.csv'):
  31. if csv_file.name.count('_') == 2:
  32. _, filetype, _ = csv_file.name.split('_')
  33. ift_import(str(csv_file), target_tables[filetype])
  34. # csv_file.unlink()
  35. if __name__ == '__main__':
  36. import_dir()