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 文件中的表列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 bcp 将 blob 文件列表导入 SQL Server