2010-03-13 3 views
6

ANSI SQL 문자열을 다양한 구성 요소로 토큰 화/파싱하는 오픈 소스 라이브러리 (모든 언어, Python/PHP를 선호)가 있습니까? 나는 다음과 같은 문자열SQL 명령을 포함하는 문자열 파싱/토큰 화

SELECT a.foo, b.baz, a.bar 
FROM TABLE_A a 
LEFT JOIN TABLE_B b 
ON a.id = b.id 
WHERE baz = 'snafu'; 

이 있다면

즉, I 재 작성

//fake PHPish 
$results['select-columns'] = Array[a.foo,b.baz,a.bar]; 
$results['tables'] = Array[TABLE_A,TABLE_B]; 
$results['table-aliases'] = Array[a=>TABLE_A, b=>TABLE_B]; 
//etc... 

같은 데이터 구조/객체 뭔가를 다시 얻을 것, 나는의 코드를 찾고 있어요 엔진이 SQL 명령을 어떻게 처리해야하는지 알 수 있도록 SQL 명령을 괴롭히는 데이터베이스 패키지. 인터넷을 검색하면 SQL WITH 문자열을 구문 분석하는 방법에 대한 많은 결과가 나타납니다. 그건 내가 원하는 것이 아니야.

나는 내가 원하는 것을 찾기 위해 오픈 소스 데이터베이스의 코드를 통해 glop 수 실현,하지만 난 뭔가를 기대했다 (만들어 더 준비가 조금 있지만 당신은 는 MySQL, PostgreSQL을, SQLite는 소스에 알고있는 경우 보기, 함께 전달해 주시기 바랍니다)

고마워요!

+0

http://stackoverflow.com/questions/1394998/parsing-sql-with-python – bernie

답변

2

SQLite 소스에는 SQL의 문법을 포함하는 parse.y이라는 파일이 있습니다. 이 파일을 lemon parser generator에 전달하여 문법을 실행하는 C 코드를 생성 할 수 있습니다.

+0

소스 코드에서'parse.y' 파일을 찾을 수 없습니까? –