是否有在线网站可用于验证符合多个数据库的语法?
例如:如果我有一个带有'usage'关键字的SQL语句,那么该网站应该给我一个错误,说MYSQL中保留了'usage'关键字?
答案 0 :(得分:21)
你可以尝试像this
这样的格式化程序它们将始终受到限制,因为它们不会(也不能)知道您在数据库中定义的用户定义函数(或您拥有或无权访问的内置函数)。 / p>
您还可以查看ANTLR(但这将是离线解决方案)
答案 1 :(得分:7)
答案 2 :(得分:5)
我从来没有见过这样的东西,但是这个开发工具包括oracle,mysql,db2和sql server的语法检查器...... http://www.sqlparser.com/index.php
然而,这似乎只是图书馆。您需要构建一个应用程序来利用解析器来执行您想要的操作。包含所有数据库的企业版将花费您450美元......哎哟!
编辑: 并且,在说完之后 - 看起来有人可能已经使用该库完成了您想要的任务:http://www.wangz.net/cgi-bin/pp/gsqlparser/sqlpp/sqlformat.tpl
虽然在线工具不会自动检查每个数据库,但您需要手动运行每个数据库。我也不能说检查语法有多好。你需要调查自己。
答案 3 :(得分:4)
只知道这一点。不确定它对MySQL http://developer.mimer.se/validator/
有多好答案 4 :(得分:3)
我不知道任何这样的,我的经验是它目前不存在。大多数是两个数据库的并排比较。该信息需要所有遇到的数据库中的专家,这并不常见。版本也依赖于知道支持的内容。
ANSI函数正在大力确保跨数据库支持语法,但它依赖于实现规范的供应商。到目前为止,他们并没有一次实现整个ANSI规范。
但是你可以通过询问具体问题并包括所涉及的数据库和所使用的版本来挤占像这样的网站上的来源。
答案 5 :(得分:2)
我愿意打赌我的一些声誉,即没有这样的事情。
部分原因是如果您担心跨平台的SQL兼容性,那么您最好的选择是使用某些API或ORM工具来抽象您的数据库代码,以便为您处理这些事情,并得到很好的支持,所以将在出现时处理更新的数据库版本。
您可以使用的确切API类型取决于您的编程语言/平台。例如,PHP有Pear:DB和其他人,我个人已经发现在Django framework中实现了非常好的Python的ORM功能。我认为在其他平台上也应该有一些这样的东西。