如何检查 SQLite3 语法?

Ben*_*kes 5 sqlite syntax-checking

有没有办法在不运行 SQLite3 脚本的情况下检查它的语法?

基本上,我正在寻找的SQLite3的当量ruby -c script.rbperl -c script.plphp --syntax-check script.php,等。

我想过使用explain,但我想检查的大多数脚本都保留以供参考(并且不一定有关联的数据库)。使用explain也会使其难以与Syntastic 之类的东西一起使用。(也就是说,我只想检查语法,而不是语义。)

更新:

我糊涂了。假设我想对此进行语法检查:

select * from foo;
Run Code Online (Sandbox Code Playgroud)

我可以做这样的事情:

echo 'explain select * from foo;' | sqlite3
Run Code Online (Sandbox Code Playgroud)

但后来我得到:

SQL error near line 1: no such table: foo
Run Code Online (Sandbox Code Playgroud)

我希望看到的只是“语法正常”(或类似的东西)。那可能吗?

dic*_*oce 0

您可能可以对内存数据库使用 EXPLAIN。使用 sqlite3,您可以通过将“:memory:”作为文件名传递给 sqlite3_open_v2() 来获取内存数据库。