代码之家  ›  专栏  ›  技术社区  ›  Benjamin Oakes

如何检查SQLite3语法?

  •  3
  • Benjamin Oakes  · 技术社区  · 14 年前

    有没有一种方法可以在不运行SQLite3脚本的情况下检查它的语法?

    基本上,我要找的是 ruby -c script.rb , perl -c script.pl php --syntax-check script.php 等等。

    我想用 explain ,但我想检查的大多数脚本都是为了参考而保留的(不一定有关联的数据库)。使用 也会使它很难用在像 Syntastic . (也就是说,我只想查一下 语法 语义学 .)

    更新:

    select * from foo;
    

    我可以做一些类似的事情:

    echo 'explain select * from foo;' | sqlite3
    

    SQL error near line 1: no such table: foo
    

    我只希望看到“Syntax OK”(或类似的东西)。有可能吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   dcorking Blorgbeard    8 年前

    到目前为止,一个对我来说运行良好的语法检查器是rubygem sqlint

    它检查ANSI-SQL:它不是特定于 sqlite 方言。

    2015年,在这个问题被问到5年后,它问世了

    它需要Ruby和一个C编译器(来构建 pg_query 本机扩展。)

    以下是输出的示例: $ sqlint ex7a.sql ex7a.sql:81:10:ERROR syntax error at or near "*"

        2
  •  1
  •   Brian R. Bondy    14 年前

    正如你提到的,你可以使用 EXPLAIN 关键字。它将返回有关如果省略前面的EXPLAIN关键字将如何执行语句的信息。

        3
  •  0
  •   dicroce    14 年前

    也许你可以用内存来解释数据库。使用sqlite3,可以通过将“:memory:”作为文件名传递给sqlite3_open_v2()来获得内存中的数据库。

    推荐文章