database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 26851 게시물 읽기
No. 26851
[질문] 다른 데이터베이스간의 스키마 차이 diff...
작성자
lurker
작성일
2007-07-11 18:06
조회수
2,744

개발용 환경과 실제 서비스용 환경의 두 데이터베이스를 갖고 작업을 하고 있습니다.


orm라이브러리를 사용하고 있는데, 해당 orm 라이브러리에서 자체적으로 create table sql을 생성해줘서

개발용 데이터베이스에서는 스키마가 변경될 때 마다 trunk database를 해서 새로이 테이블을 생성하면서 개발하고 있습니다.


그러다가 어느 정도 스키마가 fix되고 나면 서비스 중인 환경의 database에 대해서도 같은 변경을 가해줘야 하는데,

이 database는 trunk한 후 새로 생성할 수가 없어서 손으로 바뀐 부분을 찾아서 alter 로 변경해주고 있습니다.



아시다시피 diff 라는 툴을 사용하면 두 파일을 비교해서 추가될 부분, 삭제될 부분 등이 들어있는 patch file을 생성할 수 있습니다.

데이터베이스에서도 이런 툴이 있으면 손으로 하는 작업을 편리하게 할 수 있겠다는 생각이 문득 들어서...


이와 비슷하게 데이터베이스 스키마에서도 두 데이터베이스를 비교해서 변경이 필요한 요소들을 찾아내어 자동으로 SQL을 생성해주는 툴 같은것이 있는지요? 있다면 어떤 키워드로 검색을 해야하는지, 혹은 추천하는 툴이나 노하우 같은 것이 있으시면 알려주시면 감사드리겠습니다 ^^;

이 글에 대한 댓글이 총 1건 있습니다.

툴이 존재하는지는 잘 모르겠지만, 해당 데이터베이스 내에 들어있는 테이블의 목록을 읽어오고, 각각의 description을 text output 시키도록 작성하여, 두 데이터베이스의 결과를 text-diff 하면 원하시는 결과를 얻게 되지 않을까요?

 

간단한 pseudo code로 작성한다면, 아래와 같을 듯 싶습니다.

 

tables = query_parse_to_array( "show tables" )

sort(tables)

 

result = NULL

foreach( tables as table )

(

result += query_parse_to_string( "desc" + table.name )

)

fwrite( result, somefile )

 

위의 방법을 확장하여, 양쪽 데이터베이스에 동시에 접속하여, desc 결과를 코드 내에서 비교하게 만든다면, 그것이 곧 툴이 되겠지요.^^

박현우(lqez)님이 2007-07-19 16:25에 작성한 댓글입니다.
이 댓글은 2007-07-19 16:27에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
26854mysql클러스터에서 mysql의 user테이블을 ndb로 하면?
dba
2007-07-12
1500
26853mysql 테이블명 최대 길이?? [1]
김태희
2007-07-12
2094
26852GROUP BY 해결책을 부탁드립니다. [1]
이승환
2007-07-12
2437
26851[질문] 다른 데이터베이스간의 스키마 차이 diff... [1]
lurker
2007-07-11
2744
26850한 row를 카피하는방법이 잇나요 [4]
스파르타
2007-07-11
4133
26849이런 오류 보신 고수분들의 조언 부탁드립니다
agogo
2007-07-11
2223
26848쿼리문좀 봐주세요.
궁금이
2007-07-11
1733
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다