【发布时间】:2016-08-30 07:44:21
【问题描述】:
我想解析一个复杂的 SQL,它有(内连接,外连接)并获取 SQL 中使用的表名。
如果是简单的选择,我可以得到表名,但是如果 SQL 有内连接,左连接如下所示,那么结果只给出第一个表。
select * from xyz inner join dhf on df = hfj where z > 100
我正在使用类似于以下 Paul 链接中的程序。
http://pyparsing.wikispaces.com/file/view/select_parser.py/158651233/select_parser.py
谁能告诉我如何获取 SQL 中使用的所有表,如下所示
select * from xyz inner join dhf on df = hfj where z > 100.
【问题讨论】:
-
这可能是 stackoverflow.com/q/35295458/409172 的副本 该解决方案需要实时数据库和 PL/SQL 存储过程来完成大部分工作,我不确定这对您是否可行。但这可能是正确解析 complex SQL 的唯一方法。即使是非常重要的 Oracle SQL 也几乎无法解析。有 2175 个关键字,其中大部分没有保留,解析 Oracle SQL 是一项艰巨的任务。这就是为什么您需要一个快捷方式,例如在该答案中使用
EXPLAIN PLAN方法。 -
Pyparsing 不再托管在 wikispaces.com 上。转至github.com/pyparsing/pyparsing
标签: sql oracle python-2.7 pyparsing