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?

Jawaban:


963

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

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

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

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

6

Anda bisa menggunakan opsi -d dengan perintah mysqldump

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

6

Pembuangan tanpa menggunakan output.

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

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



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


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": )


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.


0

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


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

-1

Anda dapat menggunakan metode berikut

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

Semoga ini bisa membantu Anda


6
Jawaban ini tidak menambahkan apa pun yang belum dijawab oleh jawaban lain.
Daniel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.