Skema ekspor MySql tanpa data

492

Saya menggunakan database MySql dengan program Java, sekarang saya ingin memberikan program itu kepada orang lain.

Bagaimana cara mengekspor struktur basis data MySql tanpa data di dalamnya, hanya strukturnya?

Darth Blue Ray
sumber

Jawaban:

963

Anda dapat melakukannya dengan --no-dataopsi dengan perintah mysqldump

mysqldump -u root -p --no-data dbname > schema.sql
Daric
sumber
11
IMHO, mysqldumpadalah jawaban terbaik. Administrator MySQL ditinggalkan dan MySQL Workbench masih cukup bermasalah.
Álvaro González
49
Juga pertimbangkan untuk menggunakan --single-transactionopsi jika Anda tidak ingin atau tidak bisa mengunci meja.
Jim
47
-d adalah --no-data singkatnya.
marstone
36
Juga pertimbangkan untuk menambahkan --routines jika database Anda telah menyimpan prosedur / fungsi
crafterm
15
Secara default, ini tidak termasuk CREATE DATABASEperintah. Untuk memasukkan, ganti dbnamedengan --databases dbname(singkatan:) -B dbname. Kemudian untuk mengimpor di server lain, gunakanmysql -u root -p < schema.sql
Sean
88

Ya, Anda dapat menggunakan mysqldumpdengan --no-datapilihan:

mysqldump -u user -h localhost --no-data -p database > database.sql
onteria_
sumber
4
Saya terkejut ini bukan jawaban yang diterima meskipun diposting sepuluh detik sebelumnya dan lebih lengkap jika tidak identik dengan jawaban yang diterima.
user5532169
1
@ zypA13510, tampaknya sepuluh detik dapat menjadi perbedaan dari 749 upvote.
emallove
17

Anda juga dapat mengekstrak tabel individual dengan --no-dataopsi

mysqldump -u user -h localhost --no-data -p database tablename > table.sql
PodTech.io
sumber
6

Anda bisa menggunakan opsi -d dengan perintah mysqldump

mysqldump -u root -p -d databasename > database.sql
Rahul Chipad
sumber
6

Pembuangan tanpa menggunakan output.

mysqldump --no-data <database name> --result-file=schema.sql
Anders B
sumber
4

Namun berhati-hatilah bahwa opsi --no-data tidak akan menyertakan definisi tampilan. Jadi jika Anda memiliki tampilan seperti berikut, buat tampilan v1 pilih a. idAS id, a. created_dateAS created_date dari t1; dengan opsi --no-data, definisi tampilan akan diubah menjadi mengikuti buat tampilan v1 pilih 1 AS id, 1 AScreated_date

Mamta Satoor
sumber
2

Jika Anda menggunakan IntelliJ, Anda dapat mengaktifkan tampilan Database (Lihat -> Alat Jendela -> Database)

Di dalam tampilan itu terhubung ke database Anda. Kemudian Anda dapat mengklik kanan basis data dan memilih "Salin DDL". IDE lain mungkin menawarkan fungsi serupa.

IntelliJ DDL

Ant1Zykl0n
sumber
2
Saya mencobanya, tidak mengandung pemicu (dan Tuhan tahu apa lagi yang tidak)
phil294
2

Jika Anda ingin membuang semua tabel dari semua basis data dan tanpa data (hanya basis data dan struktur tabel) Anda dapat menggunakan:

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

Ini akan menghasilkan file .sql yang dapat Anda muat ke server mysql untuk membuat database baru. Kasus penggunaan untuk ini tidak banyak dalam lingkungan produksi, tapi saya melakukan ini setiap minggu untuk mengatur ulang server yang terhubung ke situs web demo, jadi apa pun yang dilakukan pengguna selama minggu ini, pada hari Minggu semuanya kembali ke "baru": )

Javier Larroulet
sumber
1

Untuk mendapatkan skrip pembuatan tabel individual:
- pilih semua tabel (dengan tombol shift)
- cukup klik kanan pada nama tabel dan klik Salin ke Clipboard> Buat Pernyataan.

mias
sumber
0

shell> mysqldump --no-data --routines --events test> dump-defs.sql

pengguna13012757
sumber
1
Selamat datang di StackOverflow. Anda bisa membuat jawaban yang bagus dari ini jika Anda memberikan sedikit informasi dan kendala.
Janhoo
0

Tambahkan opsi --routines dan --events untuk juga memasukkan definisi rutin dan acara yang tersimpan

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

Anda dapat menggunakan metode berikut

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

Semoga ini bisa membantu Anda

Phoenix
sumber
6
Jawaban ini tidak menambahkan apa pun yang belum dijawab oleh jawaban lain.
Daniel