哪种语言有很好的SQL解析库?

时间:2011-11-03 12:15:32

标签: sql parsing language-agnostic

我正在寻找好的SQL解析器。一个可以使用子选择,非选择查询,CTE,窗口函数和其他合法的SQL元素。

结果将是某种抽象语法树,我以后可以继续使用它。

语言几乎无关紧要,因为我愿意学习新语言只是为了使用该库(如果存在的话)。

我知道从某些开源数据库中提取解析器在技术上是可行的,但这远非易事(至少对于我需要的PostgreSQL解析器而言)。

3 个答案:

答案 0 :(得分:2)

Python中有一个无效的SQL解析器:python-sqlparse。令牌作为对象暴露。我怀疑它们是否支持“其他合法的SQL语句”,窗口函数等,尽管这些是由供应商特定的语法控制的,并且没有供应商在技术上完全符合SQL标准。

嗯(知道你愿意学习一门新语言),为什么你需要在语法树上工作?如果你需要一些处理数据库的魔力,可能你不需要重新发明轮子:Python有一个很棒的数据库工具包 - SQL ALchemy

答案 1 :(得分:1)

你可以google“sql parser”。这是列出的:General SQL Parser以下是官方网站上列出的一些突出显示的功能:

  • 脱机SQL语法检查
  • 高度可自定义的SQL格式化程序
  • 深入分析SQL脚本
  • 完全访问SQL查询分析树
  • 各种数据库的自定义SQL引擎
  • 主要编程语言支持

这是一个商业SQL库。

答案 2 :(得分:0)

我们的DMS Software Reengineering Toolkit有PL / SQL和ANSI SQL 2011完整解析器(到AST)和prettyprinters(AST返回有效文本)。这些都不是PostGres SQL,但DMS有一种方言机制,通过修改一些语法规则并保留其余部分,可以相对容易地从基础语法中构建方言。从SQL 2011语法中执行此操作似乎是解决问题的实用方法。

DMS还提供了访问/遍历/修改AST的工具,包括程序和表面语法模式和转换。把它想象成“超越解析的生活”。