2010-05-27 12 views
3

SQLite3 스크립트를 실행하지 않고 구문을 검사 할 수있는 방법이 있습니까?SQLite3 구문을 어떻게 확인합니까?

기본적으로, 나는 주위를 유지하는 등 ruby -c script.rb의 sqlite3를 동등한, perl -c script.pl, php --syntax-check script.php,

내가 explain를 사용하여 생각했지만, 스크립트의 대부분을 내가 확인하고 싶습니다 찾고 있어요 참조 목적 (및 관련 데이터베이스가 반드시 필요하지는 않음). explain을 사용하면 Syntastic과 같이 사용하기가 어려울 수도 있습니다. (즉, 난 단지 구문하지 의미을 확인하고 싶은거야.)

업데이트 :

내가 혼란 스러워요. 이 전 구문이 확인하고 싶은 말은하자

내가 좋아하는 뭔가를 할 수
select * from foo; 

:

echo 'explain select * from foo;' | sqlite3 

을하지만 내가 얻을 :

SQL error near line 1: no such table: foo 

내가보고 기대하는 모든이 " 구문 확인 "(또는 비슷한)을 누릅니다. 그게 가능하니?

+0

이것은 내가 생각하고있는 것입니다 : http://developer.mimer.se/validator/parser200x/index.tml#parser –

답변

0

아마도 메모리 데이터베이스에 대해 EXPLAIN을 사용할 수 있습니다. sqlite3을 사용하면 ": memory :"를 파일 이름으로 sqlite3_open_v2()에 전달하여 메모리 데이터베이스를 확보 할 수 있습니다.

0

언급 한대로 EXPLAIN 키워드를 사용할 수 있습니다. 앞의 EXPLAIN 키워드를 생략 한 경우 명령문 실행 방법에 대한 정보를 리턴합니다.

1

나를 위해 잘 작동 구문 검사기는 지금까지 그것은 ANSI의 SQL을 확인 루비 보석 sqlint

이다 : 그것은 sqlite 방언 특정하지 않습니다. (. pg_query 기본 확장을 빌드 할 때)

그것은 5 년 문제가

그것은 루비와 C 컴파일러가 필요 요청 후 여기에

출력의 예입니다 2015 년에 나온 : $ sqlint ex7a.sql ex7a.sql:81:10:ERROR syntax error at or near "*"

진정한 유닉스 전통에서 구문이 올바른 경우 sqlint는 출력을 생성하지 않습니다. 질문자가 질문 할 때 테이블이 존재하는지 확인하지 않습니다.

+0

공유 주셔서 감사합니다! 나는 2 주 전에'sqlint'에 대해 알게되었지만, 당신의 답은 실제로 그것을 설치하고 시험해 보도록했습니다. –

관련 문제