我所在的团队有一个 SSRS 设置,大约有 1300 个(并且还在不断增加)罐装报告。可以想象,当对表进行重大更改时,这会带来问题。查找所有可能触及表/字段的报告充其量是容易出错的。
我正在尝试以编程方式构建依赖模型。获取视图/表的模式Owner -> Object -> Fields
以及视图/表的关联方式非常简单。
我正在努力解决的问题是如何从给定查询中获取已解析的字段列表。我可以从 RDL 文件中提取查询,但解释这些文件远非如此。查询可以包含类似字段和表的别名,此外还有诸如select *
. 我试图避免正则表达式黑客,我真的不想写一个 SQL 解释器......
我最初的想法是遍历 RDL 文件并解析解释计划输出。虽然在技术上可行,但这并没有给我已解决字段的完整列表。
有什么方法可以让数据库分析给定的查询并返回列表Object_Name.Field_Name
?我不介意在必要时进行一些文本处理以提取结果。
Oracle 12c 提供了该程序
DBMS_UTILITY.EXPAND_SQL_TEXT
。EXPAND_SQL_TEXT 过程
如果您有查询,它可以扩展其文本以涉及基表及其列。
例子:
要查找用于的表和列
select * from v2
:输出是:
剩下的取决于你。