Guest User

Untitled

a guest
Jan 8th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.80 KB | None | 0 0
  1. from sqlalchemy import *
  2. import cx_Oracle
  3. import os, subprocess
  4. from threading import Thread
  5. from datetime import *
  6.  
  7. def connect_to_repo(Repository, Domain, SecurityDomain, User, Password):
  8.     RepoCommand = "C:/Informatica/10.1.0/clients/DeveloperClient/pcutils/10.1.0/pmrep.exe connect -r " + Repository + " -d " + Domain + " -s " + SecurityDomain + " -n " + User + " -X " + Password
  9.     RepoCommand = RepoCommand.rstrip()
  10.     p = subprocess.Popen(RepoCommand, stderr=subprocess.PIPE, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
  11.     out, err = p.communicate()
  12.     #print (out)
  13.  
  14. def export_from_repo(ListObject):
  15.     for ItemList_ in ListObject:
  16.         p = subprocess.Popen(ItemList_,stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
  17.         out, err = p.communicate()
  18.         #print (out)
  19.        
  20. def split(a, n):
  21.     k, m = divmod(len(a), n)
  22.     return (a[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in xrange(n))
  23.  
  24.  
  25. #-----------------------------MAIN----------------------------------------------------------
  26. SrcPath = 'D:/EDW/ETL_DWH'
  27. ThreadNum = 128
  28.  
  29. pmrep_list = []
  30. threads = []
  31.  
  32. print ("start task " + datetime.now().strftime('%d.%m.%Y %H:%M:%S'))
  33. connection_string = 'oracle://{username}:{password}@' + \
  34.                     cx_Oracle.makedsn('{host}', '{port}', service_name='{service_name}')
  35. db = create_engine(connection_string.format(
  36.     username='s7it',
  37.     password='Snw94bbe',
  38.     host='oradb11p20.group.s7',
  39.     port='1521',
  40.     service_name='inform01.orcl',
  41. ))
  42.  
  43. if not os.path.exists(SrcPath):
  44.     os.makedirs(SrcPath)
  45.  
  46. sql_text = "select subject_area " \
  47.            "from infop1_dwhprod.rep_subject " \
  48.            "order by subject_area"
  49. folders = db.execute(sql_text)
  50. for folder_ in folders:
  51.     folder = folder_['subject_area']
  52.     TrgPath = SrcPath + '/' + folder + '/Workflows'
  53.     if not os.path.exists(TrgPath):
  54.         os.makedirs(TrgPath)
  55.     sql_text = "select workflow_name from infop1_dwhprod.rep_workflows where subject_area = '%s' order by workflow_name" % (folder)
  56.     workflows = db.execute(sql_text)
  57.     for workflow_ in workflows:
  58.         workflow = workflow_['workflow_name']
  59.         workflow_file = TrgPath + '/' + workflow + '.xml'
  60.         pmrep_text = "C:/Informatica/10.1.0/clients/DeveloperClient/pcutils/10.1.0/pmrep.exe objectexport -n %s -o workflow -f %s -u %s" % (workflow, folder, workflow_file)
  61.         pmrep_list.append(pmrep_text)
  62.  
  63. connect_to_repo('DWHSNDev3', 'Domain_infot2', 'GROUPS7', 'dwhservice', 'iz7B8lhL')
  64. part = split(pmrep_list, ThreadNum)
  65. for part_ in part:
  66.     #print (part_)
  67.     process = Thread(target=export_from_repo, args=[part_,])
  68.     process.start()
  69.     threads.append(process)
  70.  
  71. for process in threads:
  72.     process.join()
  73.  
  74. print ("end task " + datetime.now().strftime('%d.%m.%Y %H:%M:%S'))
Add Comment
Please, Sign In to add comment