我有大量庞大的SQL语句(每行1k +行)。有没有办法获取特定SQL语句使用的表和列的列表?
我需要这个来清理未使用的列(不要问我为什么)。
RDBMS:Oracle 11gR2
例如:
SELECT t1.col1,t1.col2,t2.col3
from table1 t1, table2 t2, table3 t3
where t1.col1=t3.col1
and t3.col2=t2.col1
输出(仅限提案):
TABLE1 COL1
TABLE1 COL2
TABLE2 COL1
TABLE2 COL3
TABLE3 COL1
TABLE3 COL2
编辑1:
我刚刚根据select
创建了视图,我可以从ALL_DEPENDENCES
视图中读取有关表的信息。也许是另一种查找列的方法吗?
答案 0 :(得分:2)
要获取特定SQL语句使用的表的列表,您可以
USER_DEPENDENCIES
以获取该视图中引用的表列表e.g。
CREATE VIEW VW1 AS
SELECT t1.col1,t1.col2,t2.col3
FROM table1 t1, table2 t2, table3 t3
where t1.col1=t3.col1
and t3.col2=t2.col1;
然后
select referenced_owner, referenced_name
from user_dependencies
where name = 'VW1';
对于使用过的列的列表,我想你必须自己进行解析。