我正在寻找一种在 Node.js 应用程序中解析/标记 SQL 语句的方法,以便:
- 标记ISO/IEC 9075标准或此处定义的所有“基本”SQL 关键字。
- 验证 SQL 语法。
- 找出查询将要做什么(例如读取或写入?)。
您有什么解决方案或建议窥视吗?
链接:任何 Javascript/Jquery 库来验证 SQL 语句?
我已经进行了研究,并找到了一些方法:
使用现有的 node.js 库
我进行了Google 搜索,但没有找到一个可以使用的自愿且受欢迎的库。我找到了那些:
- simple-sql-parser ( github上 22 颗星, npm上每天下载 16颗星)
- 仅支持 SELECT、INSERT、UPDATE 和 DELETE
- 路上有v2分支
- sql-parser ( github 90 星, npm每日 6 次下载)
- 仅支持基本的 SELECT 语句
- 基于jison
- sqljs ( github 17 星, npm每日 5 次下载)
- v0.0.0-3,正在开发中...根本没有文档:)
不幸的是,这些库中没有一个是完整且值得信赖的。
基于 node.js 低级标记器库自己做
我可以使用低级标记器库自行完成,例如:
基于现有的Javascript代码美化器自己做
CodeMirror是一个非常酷的 Javascript 库(浏览器端),可以识别 SQL 关键字、字符串等。查看演示。
我可以基于 CodeMirror 构建一个 node.js 库标记器。SQL 模式在github 上,我可以调整它以在节点应用程序中获取令牌。
PS:CodeMirror在github上有 5046 颗星,并且维护得很好。
我发现有两个不同的问题:标记化和语法验证(与标记化有关)。
我根据优秀CodeMirror的SQL 模式为自己做了一个Node.js 的SQL 分词器(github 上 5,046 颗星,维护良好)。CodeMirror 的 SQL 模式负责“通用” SQL 和一些 SQL 特殊性,如MSSQL、MySQL、PL/SQL、Cassandra、 Hive 和MariaDB。
当我的项目足够成熟时,我(可能)会在 GitHub 上公开并让你知道。
关于SQL 语法验证,我还没有找到 JavaScript 工具(或开源项目以适应 JS)...