SQL 文件中的表列表

Posted

技术标签:

【中文标题】SQL 文件中的表列表【英文标题】:List of Tables in SQL File 【发布时间】:2019-04-26 05:07:52 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

除非您可以保证 SQL 采用某种格式以便于挑选表,否则您将需要一个 PLSQL/SQL 词法分析器。

查看详情:

Where can I find an official grammar for the PL/SQL programming language?

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

SELECT a, b
FROM tabA, tabB
WHERE x = y;

如果你 grep 'FROM[:space:]' | cut -d' ' -f2 会起作用。

但是,如果你有:

SELECT a, b
FROM tabA,
     tabB
WHERE c IN ( SELECT x
             FROM tabC,
                  tabD
.
.

然后事情就变得棘手了,你需要 Lex/Yacc 类型的语法分析器。

UPDATE、INSERT、DELETE 应该相当简单:

egrep '(UPDATE|INSERT|DELETE)[:space:]' src.sql | cut -d' ' -f2

应该让你开始。

但是,一旦你得到更多华丽的布局,你会发现它开始错过一些东西。

【讨论】:

以上是关于SQL 文件中的表列表的主要内容,如果未能解决你的问题,请参考以下文章

SQL 通过 3 个不同的表连接

如何使用 bcp 将 blob 文件列表导入 SQL Server

查找值列表的范围 - sql中的“介于”运算符

显示由外键引用到用户配置文件表的表中的项目列表

如何从具有字典列表的表中查询,仅针对某些键 (BigQuery) SQL

如何使用 SQL 值动态填充列表框