Untitled
-- Notes: -- Run the SQL below and save as XLSX -- Open in Excel and remove first column with numbers -- Save AS CSV delimited file e.g. RMS_<date>.csv -- CSV file should be in data directory python file in code directory -- Launch python program from code directory as below -- Make sure the data file extension correct -- gen_trig_fk_v1.py test4_csv.csv -- Mapping changes -- when 9 more PKY tables ready - update the SQL below -- 2 locations - IN list (Orginal table) and CASE (APM's SYN name) with data AS (SELECT dcc.owner, dcc.table_name, (select listagg(dt.trigger_name || '|' || regexp_instr(upper(dbms_metadata.get_ddl(object_type => 'TRIGGER', name => dt.trigger_name, schema => dt.owner)), upper(dc2.table_name)) || '|' || regexp_instr(upper(dbms_metadata.get_ddl(object_type => 'TRIGGER', name => dt.trigger_name, schema => dt.owner)), upper(dc2.column_name)) || '|' || regexp_instr(upper(dbms_metadata.get_ddl(object_type => 'TRIGGER', name => dt.trigger_name, schema => dt.owner)), upper(dcc.column_name)), ',') from dba_triggers dt where dt.owner = dcc.owner and table_name = dcc.table_name and trigger_name not like 'AUD%') as trigger_name, dcc.column_name, dc2.table_name as parent_name, dc2.column_name as parent_column_name, dcc.constraint_name as FOREIGN_KEY_NAME, dcc.column_name as FK_COLUMN_NAME, dc.R_OWNER, dc.R_CONSTRAINT_NAME, dc.STATUS, ds.SYNONYM_NAME as curr_synyonym_name, (case dc2.table_name WHEN 'ACCT' THEN 'SYN_ACCOUNT' WHEN 'ACCOUNTING_SYSTEM' THEN 'SYN_ACCOUNTING_SYSTEM' WHEN 'ONYX_COMPANY_TBL' THEN 'SYN_CLIENT' WHEN 'ONYX_CC_ROLES_TBL' THEN 'SYN_CLIENT_CONTACT_ROLE' WHEN 'CONTACT_TBL' THEN 'SYN_CONTACT' WHEN 'CONTACT_VIEW' THEN 'SYN_CONTACT' WHEN 'USER_TBL' THEN 'SYN_CONTACT' WHEN 'INVESTMENTPROGRAM_TBL' THEN 'SYN_CONTRACTING_ENTITY' WHEN 'ONYX_COUNTRY_TBL' THEN 'SYN_COUNTRY' WHEN 'LOCATION_CODE' THEN 'SYN_LOCATION' WHEN 'ONYX_LOCATIONS_TBL' THEN 'SYN_MANGEMENT_LOCATION' WHEN 'FUND' THEN 'SYN_PORTFOLIO' WHEN 'FUND_LEGAL_TYPE' THEN 'SYN_PORTFOLIO_LEGAL_TYPE' END) as new_synonym_name from dba_cons_columns dcc inner join dba_constraints dc on dc.OWNER = dcc.owner and dc.CONSTRAINT_NAME = dcc.constraint_name and dc.TABLE_NAME = dcc.table_name and dc.CONSTRAINT_TYPE = 'R' inner join dba_cons_columns dc2 on dc2.owner = dc.R_OWNER and dc2.constraint_name = dc.r_CONSTRAINT_NAME left outer join dba_synonyms ds on ds.table_owner = dc.r_owner and ds.TABLE_NAME = dc2.TABLE_NAME and ds.owner = dcc.owner where dc.R_OWNER in ('REFDATA') and dcc.owner in ('RMS') and dc2.table_name in ('ACCT', 'ACCOUNTING_SYSTEM', 'ONYX_COMPANY_TBL', 'ONYX_CC_ROLES_TBL', 'CONTACT_TBL', 'CONTACT_VIEW', 'USER_TBL', 'INVESTMENTPROGRAM_TBL', 'ONYX_COUNTRY_TBL', 'LOCATION_CODE', 'ONYX_LOCATIONS_TBL', 'FUND', 'FUND_LEGAL_TYPE', 'ACCOUNT_STRATEGY_TYPE' -- ,not ready 'ACCOUNT_STRATEGY_GROUP', -- not ready 'FUND_MGMT_CODE', -- not ready 'INV_MANDATE_BASE', -- not ready 'INV_MANDATE_DET', -- not ready 'INV_MANDATE_DET_BASE', -- not ready 'MANDATE_BASE', -- not ready 'ONYX_REGIONS_TBL', -- not ready 'SELECTION_STRATEGY_TYPE' )) select data.OWNER, data.TABLE_NAME, TRIGGER_NAME, COLUMN_NAME, PARENT_NAME, PARENT_COLUMN_NAME, FOREIGN_KEY_NAME, FK_COLUMN_NAME, R_OWNER, R_CONSTRAINT_NAME, data.STATUS, data.CURR_SYNYONYM_NAME, data.NEW_SYNONYM_NAME, ds2.synonym_name as matching_synonym, ds2.TABLE_OWNER matching_table_owner, ds2.TABLE_NAME matching_table_name, (case when ds2.synonym_name is not null and (ds2.table_owner <> 'REFDATA' OR ds2.TABLE_NAME <> data.parent_name) then 'Y' else 'N' end) as synonym_change_flag from data left outer join dba_synonyms ds2 on ds2.owner = data.owner and ds2.synonym_name = data.NEW_SYNONYM_NAME
Leave a Comment