MySQL Workbench mwb 파일에서 sql 파일로 자동 변환
누구를 위한 서류입니까?
MySQL Workbench를 사용하여 DB에 대한 표 정의 (ER 그림 제작) 를 하는 사람
mwb 파일을 버전 관리 하에 놓고 (이진법이라서) 차이를 확인할 수 없어 당황하는 사람
mwb를 교재로 사용하기 위해 내부에서 xml을 열심히 연습하는 사람
mwb에서 표 정의를 관리하는 데 겪는 어려움
예를 들어 아래와 같다
user
표를 작성하여 파일app.mwb
에 저장한다git add
.그럼, 이후 계속 개발
git commit
추가표.article
가 덮어쓰였습니다app.mwb
.그럼 이따가 이commiit log를 보면 뭘 알게 될까요?
만약 두 개의 개정판을 얻었을 때의 파일을 가져와Workbench에서 내용을 확인한다면 차이를 발견할 수 있으나, 일반적으로 간단하게 확인할 수 있는 것은 텍스트 파일의 차이뿐이다.(github 이미지 diff 같은 mwb diff가 있었으면 좋겠는데, 지금은 그런 게 없는 것 같다)
만약 mwb가 2진법이라면 텍스트로 쓰면 되잖아
mwb의 파일 자체(실체는 zip으로 고정된 xml 파일)를 분석하고 내부의 표 정의를 검색할 수 있지만 MySQL Workbench는 실제로
git commit -u
스크립트 인터페이스를 탑재했다.이번에는 이것을 사용하여 mwb→sql 변환을 진행합니다.그리고 Lua
에서 훅을 하고 sql 파일도 버전 관리에 자동으로 넣으면 됩니다.버전 관리 시스템에서 어떻게 처리하는지 각자 방법을 생각해 보세요.주의점
Python
가상 프레임 버퍼를 사용합니다.(Windows는 한순간에 화면이 나오지만 포기하세요)두 번째는 이번에 MySQL Workbench 자체의 코드를 보면서 만들었기 때문에 정말 정확하다는 보장이 없습니다.
세 번째, 예를 들어 GUI 제어를 통해 DROP TABLE 문장을 추가/추가하지 않을 수 있지만 아직 스크립트에서 조작하는 방법을 모른다.하지만 이번 목적은 차분을 텍스트화하고 간단하게 확인하는 것이기 때문에 문제없다.
코드
다음 창고에 필요한 코드와 샘플, 사용 방법을 놓았습니다.호스트
git commit
에 파이썬 스크립트가 삽입되어 있지만 실제로는 10줄 정도에 불과하다.설명
컨디션
(Windows 7에서 동작 확인)
설치하다.
부팅
Xvfb를 통해 가상 디스플레이를 활성화합니다.
Xvfb를 시작하면 font에 대한 정보가 나타날 수 있지만 개의치 않습니다.
$ Xvfb :1 &
[dix] Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!
이 상태에서: 가상 프레임 버퍼 1개를 사용하여 MySQL Workbench를 시작합니다.Xvfb
에는 덤프 모델에 사용되는 파이톤 스크립트가 기술되어 있으며 다음과 같이 시작하면 mwb2sql.sh
mwb2sql.sh
안에 정의된 모든 모델, 표의 CREATE 문장을 출력한다.$ DISPLAY=:1 sh mwb2sql.sh test.mwb a.sql
가상 프레임워크 버퍼 메모리를 사용했기 때문에 ssh를 통해 연결해도 문제가 없습니다.a.sql
에서 다음을 출력합니다.-- ----------------------------------------------------------------------------
-- MySQL Workbench Migration
-- Migrated Schemata: mydb
-- Source Schemata:
-- Created: Thu Aug 01 02:32:15 2013
-- ----------------------------------------------------------------------------
SET FOREIGN_KEY_CHECKS = 0;;
-- ----------------------------------------------------------------------------
-- Schema mydb
-- ----------------------------------------------------------------------------
DROP SCHEMA IF EXISTS `mydb` ;
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
-- ----------------------------------------------------------------------------
-- Table mydb.table1
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`table1` (
`id` INT NOT NULL ,
`name` VARCHAR(45) NULL ,
`created` DATETIME NULL ,
`updated` DATETIME NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
SET FOREIGN_KEY_CHECKS = 1;;
git hook과의 협업
마지막으로, 이 스크립트와git hook을 텍스트로 조합한 sql 파일을 자동commiit로 만듭니다.창고에 있는
test.mwb
파일을 현재 개발 중인 창고의 a.sql
로 사용하세요.hook 스크립트에 가상 프레임 버퍼 메모리를 사용하지 않기 때문에 export DISPLAY를 먼저 지정합니다.훅 스크립트도 바꿀 수 있습니다.
$ export DISPLAY=:1
이 상태에서 개발 중인 창고에서 임의의 mwb 파일git_pre-commit
을 만들어 보세요.git/hooks/pre-commit
.git add
와 같은 파일은 자동으로 만들어져야 합니다.이 경우 client-side hook이지만 서버-side hook으로도 사용할 수 있습니다.경품: ER 그림을 쓰기 위해 Workbench를 사용하는 사람에게만
이전보다 많이 안정됐지만, 조금이라도 조작하다가 떨어지는 경우가 많기 때문에 단순히 그림을 쓰는 도구로 사용하는 것은 추천하지 않는다.그러나 DB 서버의 실제 테이블과 mwb의 모델이 동기화되고 차별화되는 등 워크벤치 특유의 기능이 많은데 워크벤치를 특별히 사용한다면 이런 기능을 추천합니다.
Reference
이 문제에 관하여(MySQL Workbench mwb 파일에서 sql 파일로 자동 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomoemon/items/ec3bf7e418a3335990dc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)