【发布时间】:2023-03-03 00:59:02
【问题描述】:
如果我有一个 SQL 脚本,有没有办法将脚本中引用的列和表解析并提取到类似结构的表中:
脚本:
Select t1.first, t1.last, t2.car, t2.make, t2.year
from owners t1
left join cars t2
on t1.owner_id = t2.owner_id
输出:
Table Column
owners first
owners last
owners owner_id
cars car
cars make
cars year
cars owner_id
【问题讨论】:
-
您是在问是否有可能或是否有简单的方法?除非您可以将输入限制为语法的简单而严格的子集,否则您必须为 SELECT 及其相关表达式定义语法...h2database.com/html/grammar.html#select
-
@THK 我猜两者都有。似乎这发生在 sql 执行过程中的某个地方,并且很好奇是否有人将其变成了库。
-
有点令人惊讶的是,似乎没有任何独立的解析器被广泛接受为权威。有一些关于该主题的 SO 主题:stackoverflow.com/questions/660609/sql-parser-library-for-java。 Python 有 sqlparse 库,但它不验证语法。
-
如果您找到了解决方案,请告诉我?
标签: python mysql sql sql-server parsing