MySql ส่งออกสคีมาโดยไม่มีข้อมูล


491

ฉันกำลังใช้ฐานข้อมูล MySql กับโปรแกรม Java ตอนนี้ฉันต้องการมอบโปรแกรมให้กับบุคคลอื่น

วิธีการส่งออกโครงสร้างฐานข้อมูล MySql โดยไม่มีข้อมูลอยู่ในนั้นเพียงแค่โครงสร้าง

คำตอบ:


961

คุณสามารถทำได้ด้วย--no-dataตัวเลือกด้วยคำสั่ง mysqldump

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

11
IMHO mysqldumpเป็นคำตอบที่ดีที่สุด ผู้ดูแลระบบ MySQL ถูกยกเลิกและ MySQL Workbench ยังค่อนข้างบั๊ก
ÁlvaroGonzález

49
ลองพิจารณาใช้--single-transactionตัวเลือกหากคุณไม่ต้องการหรือไม่สามารถล็อคตาราง
Jim

47
-d คือ - ไม่มีข้อมูลสำหรับระยะสั้น
marstone

36
ลองพิจารณาเพิ่ม - รูทีนถ้าฐานข้อมูลของคุณเก็บโพรซีเดอร์ / ฟังก์ชั่นไว้
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
ฉันประหลาดใจที่นี่ไม่ใช่คำตอบที่ได้รับการยอมรับแม้จะโพสต์เมื่อสิบวินาทีก่อนหน้านี้และจะสมบูรณ์กว่านี้หากไม่เหมือนกับคำตอบที่ยอมรับ
user5532169

1
@ zypA13510 ดูเหมือนว่าสิบวินาทีอาจมีความแตกต่างของ 749 upvotes
emallove

17

คุณยังสามารถแยกตารางส่วนบุคคลด้วย--no-dataตัวเลือก

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



4

ระวังแม้ว่าตัวเลือก - ไม่มีข้อมูลจะไม่รวมคำจำกัดความของมุมมอง ดังนั้นถ้าโยมีมุมมองเช่นต่อไปนี้สร้างมุมมอง V1 aเลือก idAS ,id เป็น จาก t1; ด้วยตัวเลือก - ไม่มีข้อมูลนิยามของมุมมองจะถูกเปลี่ยนเป็นสร้างมุมมอง v1 เลือก 1 AS , 1 ASacreated_datecreated_dateidcreated_date



2

ในกรณีที่คุณใช้ IntelliJ คุณสามารถเปิดใช้งานมุมมองฐานข้อมูล (มุมมอง -> หน้าต่างเครื่องมือ -> ฐานข้อมูล)

ภายในมุมมองนั้นเชื่อมต่อกับฐานข้อมูลของคุณ จากนั้นคุณสามารถคลิกขวาที่ฐานข้อมูลและเลือก "คัดลอก DDL" IDE อื่น ๆ อาจมีฟังก์ชั่นที่คล้ายกัน

IntelliJ DDL


2
ฉันลองดูมันไม่มีทริกเกอร์ใด ๆ (และพระเจ้าก็รู้ว่าไม่มีอะไรอื่นอีกแล้ว)
phil294

2

ถ้าคุณต้องการดัมพ์ตารางทั้งหมดจากฐานข้อมูลทั้งหมดและไม่มีข้อมูล (เฉพาะฐานข้อมูลและโครงสร้างตาราง) คุณสามารถใช้:

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

สิ่งนี้จะสร้างไฟล์. sql ที่คุณสามารถโหลดลงในเซิร์ฟเวอร์ mysql เพื่อสร้างฐานข้อมูลใหม่ ใช้กรณีนี้มีไม่มากในสภาพแวดล้อมการผลิต แต่ฉันทำแบบนี้ทุกสัปดาห์เพื่อรีเซ็ตเซิร์ฟเวอร์ที่เชื่อมโยงกับเว็บไซต์ตัวอย่างดังนั้นสิ่งที่ผู้ใช้ทำในระหว่างสัปดาห์ในคืนวันอาทิตย์ทุกอย่างย้อนกลับไปที่ "ใหม่": )


1

ในการรับสคริปต์การสร้างของแต่ละตาราง:
- เลือกตารางทั้งหมด (พร้อมปุ่ม Shift)
- เพียงคลิกขวาที่ชื่อตารางแล้วคลิกคัดลอกไปที่คลิปบอร์ด> สร้างคำสั่ง


0

เชลล์> mysqldump - no-data - รูทีน - กิจกรรมทดสอบ> dump-defs.sql


1
ยินดีต้อนรับสู่ StackOverflow คุณสามารถให้คำตอบที่ดีหากคุณให้ข้อมูลและข้อ จำกัด เพิ่มเติมอีกเล็กน้อย
Janhoo

0

เพิ่มตัวเลือก - รูทีนและ - กิจกรรมเพื่อรวมรูทีนที่เก็บไว้และคำจำกัดความเหตุการณ์

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.