【发布时间】:2020-10-31 20:34:08
【问题描述】:
我们正在构建一个用户选择数据源并构建 SQL 的应用程序
- 使用我们的 SQL 查询构建器或
- 将现有 SQL 粘贴到应用中。
这个应用程序的一个要求是获取一些表/视图列属性,包括数据类型和大小、精度等。如果用户使用选项#1 SQL查询生成器,那么我们将知道该列通过从 DB 进行自省的属性;但是,如果用户选择选项 #2,即粘贴现有 SQL,那么我们将需要解析 SQL,然后找出所有 SELECT(projected) 列的所需属性。问题是,如何实现这个目标:
- 从粘贴的 SQL 中找出表/视图和对应的投影列名。
我们在后端使用 java 并且更喜欢 java 库,但如果 java 中不存在执行上述 2 个功能的其他语言库,我们将向其他语言库开放。从this,我看到有几个库,但我不知道这些库/工具中的哪些可以帮助获取表/视图名称和相应的列名,以便我可以自省数据库并找到所需的属性。
虽然我们的应用程序适用于所有数据库,但目前,我们的客户使用 MySQL 和 Oracle。因此,这些库现在应该能够解析这两个数据库。
我意识到我可以使用 ANTLR 为 MySQL 和 Oracle 构建解析器,但我不知道为实际 SQL 构建解析器需要多少时间。
希望提供有关哪种方法和工具可以更快实现目标的指针。
我们的前端使用 React,后端使用 Java,如果有帮助的话。
【问题讨论】:
标签: java mysql sql oracle parsing