데이터가없는 MySql 내보내기 스키마


490

Java 프로그램과 함께 MySql 데이터베이스를 사용하고 있습니다. 이제 다른 사람에게 프로그램을 제공하고 싶습니다.

데이터가없는 MySql 데이터베이스 구조를 내보내는 방법은 무엇입니까?

답변:


960

--no-datamysqldump 명령으로 옵션을 사용할 수 있습니다

mysqldump -u root -p --no-data dbname > schema.sql

11
IMHO mysqldump는 최고의 답변입니다. MySQL 관리자는 버리고 MySQL Workbench는 여전히 버그가 많습니다.
Álvaro González

49
또한 --single-transaction테이블 잠금을 원하지 않거나 수행 할 수없는 경우 옵션 사용을 고려하십시오 .
Jim

47
-d는 짧은 데이터입니다.
marstone

36
당신이있는 거 데이터베이스 프로 시저 / 함수를 저장 한 경우에도 --routines을 추가하는 것을 고려
crafterm을

15
기본적으로 여기에는 CREATE DATABASE명령 이 포함되지 않습니다 . 포함하려면, 대신 dbname--databases dbname(단축형 -B dbname). 그런 다음 다른 서버로 가져 오려면mysql -u root -p < schema.sql
Sean

88

예, 다음 옵션 mysqldump과 함께 사용할 수 있습니다 --no-data.

mysqldump -u user -h localhost --no-data -p database > database.sql

4
10 초 전에 게시되었지만 승인 된 답변과 동일하지 않은 경우 더 완벽하지만이 답변이 허용되지 않는 것에 놀랐습니다.
user5532169

1
@ zypA13510, 분명히 10 초는 749 upvotes의 차이가 될 수 있습니다.
emallove

17

--no-data옵션으로 개별 테이블을 추출 할 수도 있습니다.

mysqldump -u user -h localhost --no-data -p database tablename > table.sql

6

mysqldump 명령에 -d 옵션을 사용할 수 있습니다

mysqldump -u root -p -d databasename > database.sql

6

출력을 사용하지 않고 덤핑.

mysqldump --no-data <database name> --result-file=schema.sql

4

--no-data 옵션에는 뷰 정의가 포함되지 않습니다. 따라서 yo create view v1 select와 같은 뷰가 있으면 select a. idAS id, a. t1로부터의 created_dateAS created_date; --no-data 옵션을 사용하면 뷰 정의가 다음 뷰 생성 v1 select 1 AS id, 1 AS로 변경됩니다.created_date



2

IntelliJ를 사용하는 경우 데이터베이스보기 (보기-> 도구 창-> 데이터베이스)를 사용할 수 있습니다.

해당 뷰 내부에서 데이터베이스에 연결하십시오. 그런 다음 데이터베이스를 마우스 오른쪽 단추로 클릭하고 "Copy DDL"을 선택하십시오. 다른 IDE도 비슷한 기능을 제공 할 수 있습니다.

IntelliJ DDL


2
나는 그것을 시도했다, 그것은 어떤 방아쇠도 포함하지 않는다 (그리고 신은 다른 것을 안다)
phil294

2

모든 데이터베이스에서 모든 테이블을 덤프하고 데이터가없는 경우 (데이터베이스 및 테이블 구조 만) 다음을 사용할 수 있습니다.

mysqldump -P port -h hostname_or_ip -u username -p --no-data --all-databases > db_backup.sql

그러면 새로운 데이터베이스를 만들기 위해 mysql 서버에로드 할 수있는 .sql 파일이 생성됩니다. 이에 대한 유스 케이스는 프로덕션 환경에서는 많지 않지만 매주 데모 웹 사이트에 연결된 서버를 재설정하기 위해 매주 수행하므로 주중에 수행하는 모든 일, 일요일 밤에는 모든 것이 "새"로 롤백됩니다. )


1

개별 테이블 생성 스크립트를 가져 오려면 :
-모든 테이블을 선택하고 (Shift 키 사용)
테이블 이름을 마우스 오른쪽 버튼으로 클릭하고 클립 보드에 복사> 명령문 생성을 클릭하십시오.


0

쉘> mysqldump --no-data --routines --events 테스트> dump-defs.sql


1
StackOverflow에 오신 것을 환영합니다. 조금 더 많은 정보와 제약을 주면 이것으로부터 큰 대답을 할 수 있습니다.
Janhoo

0

저장된 루틴 및 이벤트 정의도 포함하도록 --routines 및 --events 옵션을 추가하십시오.

mysqldump -u <user> -p --no-data --routines --events test > dump-defs.sql

-1

다음 방법을 사용하여 취할 수 있습니다

mysqldump -d <database name> > <filename.sql> // -d : without data

희망이 당신을 도울 것입니다


6
이 답변은 다른 답변이 아직 말하지 않은 것을 추가합니다.
Daniel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.