2008-11-06 3 views
4

데이터베이스의 스키마를 설치 스크립트의 SQL과 비교할 수있는 도구를 작성하려고합니다. 데이터베이스에서 정보를 얻는 것은 매우 간단하지만 설치 스크립트를 구문 분석하는 데 약간의 문제가 있습니다.누구나 좋은 SQL 파서를 추천 할 수 있습니까?

나는 Google에 표시되는 몇 가지 파서를 가지고 놀았지만 다소 불완전한 것처럼 보였습니다. 이상적으로 나는 꽤 안정적이고 절반은 괜찮은 문서를 가지고있는 오픈 소스 파서를 찾고 싶다.

또한 특정 데이터베이스와 관련된 유형 및 구문에 대해서는별로 신경 쓰지 않습니다. 검사가 필요한 데이터베이스는 매우 간단합니다.

답변

1

General SQL Parser은 괜찮습니다. 당신은 아마 이미 그것을 발견했을 것입니다,하지만 당신이 SQL이 매우 간단하다고 말한 이후로 당신에게 도움이되지 않는 것은 무엇입니까?

1

일부 데이터베이스 (예 : postgresql)를 사용하면 현재 스키마를 쿼리 할 수 ​​있습니다. 따라서 다른 방향으로 갈 수 있습니다 : 스키마를 가져 와서 SQL 구문을 분석하는 대신 데이터베이스의 스키마에 있는지 확인해야하는 필드와 테이블을 쿼리하는 SQL 문을 생성 할 수 있습니다.

다음은 예입니다 : postgresql schema metadata

0

SQL Server는이 중 일부를 수행 할 수 있습니다. SDK를 통해 액세스 할 수있는 꽤 좋은 종속성 트리를 제공합니다.

0

Powerdesigner는 라이브 데이터베이스와 스크립트에서 엔지니어를 리버스하여 차이 스크립트를 작성할 수 있습니다.

이번에 사용할 수있는 15 일 무료 평가판이 있습니다. 원하는대로 작동하는지 확인하십시오.

1

저는 SQL Compare을 사용했으며 매우 뛰어납니다.

설치 스크립트를 실행하여 새 db를 만든 다음 기존 db를 새 db와 비교할 수 있습니다.

+0

이것은을 좋은 빠른 앤 더러운 방법 - 데이터베이스 관리자의 SQL 파서를 사용합니다. +1 – ConcernedOfTunbridgeWells

0

진심으로, 특히 간단한 데이터베이스를 들어, SQL 서버에 내장 된 큰 SQL 파서를 가지고있다.

스키마를 작성하고 그것을로드합니다. 데이터를 비교 한 다음 완료되면 스키마를 삭제하십시오.

DDL을 실행하는 것을 두려워하면 경량 임베디드 서버 중 하나를 사용하여 작업을 수행 할 수 있습니다 (예 : Java를 실행하면 Derby).

그런 다음 이제 구문 분석 된 SQL을 가져와 테이블에 액세스 할 수 있습니다.

데이터베이스를 보유하고 있으므로 가능하면 활용할 수 있습니다.

0

테이블을 만들 DDL이있는 경우 테이블 이름을 구문 분석하고 생성 된 테이블 이름 앞에 추가하십시오.

PRAGMA table_info(my_table) 
PRAGMA table_info(temporary_my_table) 

또는 MySQL을 : SQLite는 사용

: 사용중인 SQL 엔진에 따라 스키마를 조회하는 여러 가지 방법이

SELECT table_name, column_name, data_type 
FROM information_schema.columns 
WHERE table_schema = 'my_schema' 
AND (table_name LIKE '%my_table';