检索SQL中使用的表和列

时间:2014-06-13 11:24:47

标签: sql oracle oracle11g

我有大量庞大的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视图中读取有关表的信息。也许是另一种查找列的方法吗?

1 个答案:

答案 0 :(得分:2)

要获取特定SQL语句使用的表的列表,您可以

  • 使用该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';

对于使用过的列的列表,我想你必须自己进行解析。