SQL文件中的表列表

SQL文件中的表列表,sql,oracle,plsql,regexp-replace,regexp-substr,Sql,Oracle,Plsql,Regexp Replace,Regexp Substr,如何获得.sql文件中包含大量plsq/匿名块的所有表?理想的方法是通过数据字典获取数据,但这是不可能的,因为它们不在数据库中 我在想用正则表达式阅读本文:有人有更好的想法吗?除非您能够保证SQL采用某种格式,从而易于挑选表,否则您需要的是PLSQL/SQL词法分析器 有关详细信息,请参见: 为了说明我的观点,请举一个例子: SELECT a, b FROM tabA, tabB WHERE x = y; 如果您从[:空格:]grep'将有效| cut-d'-f2 但是,如果您有: SELEC

如何获得.sql文件中包含大量plsq/匿名块的所有表?理想的方法是通过数据字典获取数据,但这是不可能的,因为它们不在数据库中


我在想用正则表达式阅读本文:有人有更好的想法吗?

除非您能够保证SQL采用某种格式,从而易于挑选表,否则您需要的是PLSQL/SQL词法分析器

有关详细信息,请参见:

为了说明我的观点,请举一个例子:

SELECT a, b
FROM tabA, tabB
WHERE x = y;
如果您从[:空格:]grep'将有效| cut-d'-f2

但是,如果您有:

SELECT a, b
FROM tabA,
     tabB
WHERE c IN ( SELECT x
             FROM tabC,
                  tabD
.
.
然后事情会变得棘手,您需要Lex/Yacc类型的语法分析器

更新、插入、删除应该相当简单:

egrep '(UPDATE|INSERT|DELETE)[:space:]' src.sql | cut -d' ' -f2
你应该开始了

但是,一旦你有了更华丽的布局,你会发现它开始错过一些东西