Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sqlalchemy import *
- import cx_Oracle
- import os, subprocess
- from threading import Thread
- from datetime import *
- def connect_to_repo(Repository, Domain, SecurityDomain, User, Password):
- 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
- RepoCommand = RepoCommand.rstrip()
- p = subprocess.Popen(RepoCommand, stderr=subprocess.PIPE, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
- out, err = p.communicate()
- #print (out)
- def export_from_repo(ListObject):
- for ItemList_ in ListObject:
- p = subprocess.Popen(ItemList_,stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
- out, err = p.communicate()
- #print (out)
- def split(a, n):
- k, m = divmod(len(a), n)
- return (a[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in xrange(n))
- #-----------------------------MAIN----------------------------------------------------------
- SrcPath = 'D:/EDW/ETL_DWH'
- ThreadNum = 128
- pmrep_list = []
- threads = []
- print ("start task " + datetime.now().strftime('%d.%m.%Y %H:%M:%S'))
- connection_string = 'oracle://{username}:{password}@' + \
- cx_Oracle.makedsn('{host}', '{port}', service_name='{service_name}')
- db = create_engine(connection_string.format(
- username='s7it',
- password='Snw94bbe',
- host='oradb11p20.group.s7',
- port='1521',
- service_name='inform01.orcl',
- ))
- if not os.path.exists(SrcPath):
- os.makedirs(SrcPath)
- sql_text = "select subject_area " \
- "from infop1_dwhprod.rep_subject " \
- "order by subject_area"
- folders = db.execute(sql_text)
- for folder_ in folders:
- folder = folder_['subject_area']
- TrgPath = SrcPath + '/' + folder + '/Workflows'
- if not os.path.exists(TrgPath):
- os.makedirs(TrgPath)
- sql_text = "select workflow_name from infop1_dwhprod.rep_workflows where subject_area = '%s' order by workflow_name" % (folder)
- workflows = db.execute(sql_text)
- for workflow_ in workflows:
- workflow = workflow_['workflow_name']
- workflow_file = TrgPath + '/' + workflow + '.xml'
- 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)
- pmrep_list.append(pmrep_text)
- connect_to_repo('DWHSNDev3', 'Domain_infot2', 'GROUPS7', 'dwhservice', 'iz7B8lhL')
- part = split(pmrep_list, ThreadNum)
- for part_ in part:
- #print (part_)
- process = Thread(target=export_from_repo, args=[part_,])
- process.start()
- threads.append(process)
- for process in threads:
- process.join()
- print ("end task " + datetime.now().strftime('%d.%m.%Y %H:%M:%S'))
Add Comment
Please, Sign In to add comment