Informatica中如何通过查询获取指定映射的源表与目标表名称
Informatica知识库查询映射对应源/目标表语句方案
你之前使用的
SELECT * FROM opb_mapping仅能获取映射基础元数据,源表、目标表的元数据分别存储在opb_source、opb_target表,需通过映射实例关联表opb_mapping_instance做多表关联查询,以下是可直接使用的查询语句:
1. 按映射名称模糊查询对应源表
SELECT DISTINCT m.mapping_name, s.source_name, s.database_name, s.owner_name FROM opb_mapping m INNER JOIN opb_mapping_instance mi ON m.mapping_id = mi.mapping_id INNER JOIN opb_source s ON mi.instance_id = s.source_id WHERE m.mapping_name LIKE '%CY0..%' AND mi.instance_type = 1 -- 1代表源实例标记
2. 按映射名称模糊查询对应目标表
SELECT DISTINCT m.mapping_name, t.target_name, t.database_name, t.owner_name FROM opb_mapping m INNER JOIN opb_mapping_instance mi ON m.mapping_id = mi.mapping_id INNER JOIN opb_target t ON mi.instance_id = t.target_id WHERE m.mapping_name LIKE '%CY0..%' AND mi.instance_type = 2 -- 2代表目标实例标记
3. 按映射ID精确查询源+目标表
如果你已知映射ID,可直接替换下方SQL中的[你的映射ID]一次性获取全量关联表信息:
SELECT DISTINCT m.mapping_id, m.mapping_name, CASE WHEN mi.instance_type = 1 THEN '源表' WHEN mi.instance_type = 2 THEN '目标表' END AS table_type, COALESCE(s.source_name, t.target_name) AS table_name, COALESCE(s.database_name, t.database_name) AS database_name, COALESCE(s.owner_name, t.owner_name) AS table_owner FROM opb_mapping m INNER JOIN opb_mapping_instance mi ON m.mapping_id = mi.mapping_id LEFT JOIN opb_source s ON mi.instance_id = s.source_id AND mi.instance_type = 1 LEFT JOIN opb_target t ON mi.instance_id = t.target_id AND mi.instance_type = 2 WHERE m.mapping_id = [你的映射ID] AND mi.instance_type IN (1,2)
注意事项
- 所有查询需在Informatica PowerCenter的知识库数据库中执行,执行账号需拥有知识库表的只读权限
- 如需过滤指定文件夹的映射,可额外关联
opb_subject表,通过subject_name字段匹配文件夹名称 - 若映射中包含虚拟源/目标、临时转换表,可增加过滤条件
s.is_visible = 1(源表)或t.is_visible =1(目标表)仅返回物理表
内容的提问来源于stack exchange,提问作者Junior aizen
相关产品推荐
相关产品推荐

