Yve*_* M. 18 sql parsing tokenize node.js sql-parser
我正在寻找一种在Node.js应用程序中解析/标记SQL语句的方法,以便:
你有任何解决方案或建议偷看?
链接:任何Javascript/Jquery库验证SQL语句?
我做过研究,发现了一些方法:
使用现有的node.js库
我进行了谷歌搜索,但没有找到一个可以使用的自愿和流行的图书馆.我找到了那些:
不幸的是,这些库中没有一个是完整和可靠的.
基于node.js低级标记化库自己完成
我可以使用低级标记器库来完成自己的工作,例如:
基于现有的Javascript代码美化自己做
CodeMirror是一个非常酷的Javascript库(浏览器端),可以识别SQL关键字,字符串等.检查演示.
我可以基于CodeMirror构建一个node.js库标记器.在SQL模式是这里github上,我也许可以适应它到节点的应用程序中获得令牌.
PS:CodeMirror在github上有5,046颗星,维护得很好.
我发现存在2个不同的问题:标记化和语法验证(与标记化有关).
我根据优秀的CodeMirror的SQL模式(github上的5,046颗星,维护得很好)使自己成为Node.js 的SQL标记器.CodeMirror的SQL模式负责"通用"SQL和一些SQL特性,如MSSQL,MySQL,PL/SQL,Cassandra,Hive和MariaDB.
当我的项目足够成熟时,我(可能)会在GitHub上公开并让你知道.
关于SQL语法验证,我发现没有JavaScript工具(或者在JS中适应的开源项目)......
祝你好运。
您没有提到哪种 SQL,但大多数生产 SQL 语言都很庞大(查看 PL/SQL,忽略 Ada 部分)、复杂且不一样,因此您还必须担心方言变体。您面临着构建一个完整的 SQL 前端来完成您想做的事情;您发现的其他解析器的不完整性暗示了执行此操作所需的工作量。
正确理解解析器部分后,您必须先进行符号表和类型分析(每个符号的含义),然后才能开始找出 SQL 查询读取或写入的内容(考虑确定 SELECT * from 读取的列) .. ...)。
据我所知,有商业 SQL 解析器。您可以考虑使用其中之一。