有没有可以针对多个数据库服务器检查语法的SQL验证器?

19

有没有可以检查多个数据库服务器语法的SQL验证器?

例如,我想检查特定查询是否适用于Oracle、MySQL和SQL Server。

我更关心SQL语法而不是正在查询的实际模式,因此一个能够捕捉主要语法错误的工具,如检测到limit在SQL Server和Oracle中不支持的子句,就足够了。


编辑:

有几个答案建议检查特定DBMS或ANSI标准的语法。

我正在寻找的是针对两个或多个数据库之间功能的一种联合。我希望能够在特定应用程序中使用由所有目标DBMS支持的任何SQL功能。

我不确定这是否值得。我认为这取决于几个数据库共享的非ANSI功能数量。如果很少,那么也许将目标设置为ANSI标准会更好。


也许 SQLite shell 可以帮忙。但是,左连接和全连接没有实现,而且与 Oracle 不同的是,您可以从空中选择,而在 Oracle 中必须使用 DUAL。 - Benoit
应该验证每个数据库的哪些版本。 - Kevin Burton
@tbone和其他所有人,请查看更新的问题以获得一些澄清。 - Tahir Akhtar
1
类似问题:https://dev59.com/0G445IYBdhLWcg3wJ258 - Randall Cook
SQL标准中有一些功能,目前流行的数据库都不支持。 - Marichyasana
显示剩余2条评论
4个回答

8
我不知道有任何特定的工具,但这些工具可以检查语句是否符合ansi 92/99/2003标准:http://developer.mimer.com/validator/index.htm。这可以帮助你完成99%的工作(尤其是如果只进行CRUD操作)。如果你知道哪个数据库使用了哪些保留字,那么你也可以自己编写一个简单的检查器。参见:如何查找各种数据库中列名是否为保留关键字。正如之前提到的,如果你的目标是创建一个数据库无关的系统,考虑使用第三方工具,例如entityspaces。

1
我在一个简单的语法错误上浪费了很多时间,我没有在存储过程的声明中关闭括号(圆括号)。这个链接帮了我大忙... http://developer.mimer.com/validator/parser200x/ - Matija

2

你必须构建你的应用的 Mac 版本 :) - Armen Markossyan

0

0
您可以使用https://www.db-fiddle.com/。它支持以下数据库:
  • MySQL 8.0
  • MySQL 5.7
  • MySQL 5.6
  • MySQL 5.5
  • PostgreSQL 13
  • PostgreSQL 12
  • PostgreSQL 11
  • PostgreSQL 10.0
  • PostgreSQL 9.6
  • PostgreSQL 9.5
  • PostgreSQL 9.4
  • SQLite 3.30
  • SQLite 3.26

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接