Veri içermeyen MySql dışa aktarma şeması


491

Bir Java programı ile bir MySql veritabanı kullanıyorum, şimdi programı başkasına vermek istiyorum.

Nasıl veri olmadan MySql veritabanı yapısı, sadece yapı vermek için?

Yanıtlar:


961

Bu --no-dataseçeneği mysqldump komutuyla yapabilirsiniz

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

11
IMHO, mysqldumpen iyi cevap. MySQL Yöneticisi terk edilmiş ve MySQL Workbench hala oldukça hatalı.
Álvaro González

49
Ayrıca, --single-transactiontablo kilitleri istemiyorsanız veya yapamıyorsanız bu seçeneği kullanmayı düşünün .
Jim

47
-d kısaca -no-veridir.
marstone

36
Ayrıca, veritabanınız prosedürleri / işlevleri sakladıysa --routines eklemeyi de düşünün
crafterm

15
Varsayılan olarak, bu CREATE DATABASEkomut içermez . Eklemek dbnameiçin --databases dbname(kestirme:) ile değiştirin -B dbname. Sonra başka bir sunucuya aktarmak için şunu kullanın:mysql -u root -p < schema.sql
Sean

88

Evet, kullanabilirsiniz mysqldumpile --no-dataseçeneği:

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

4
On saniye önce yayınlanmasına ve kabul edilen cevapla özdeş değilse daha eksiksiz olmasına rağmen bunun kabul edilen cevap olmadığına şaşırdım.
user5532169

1
@ zypA13510, görünüşe göre on saniye 749 upvotes bir fark olabilir.
emallove

17

--no-dataseçeneği ile tek bir tablo da çıkarabilirsiniz

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

6

-D seçeneğini mysqldump komutuyla kullanabilirsiniz

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

6

Çıktı kullanmadan boşaltma.

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

4

- no-data seçeneğinin görünüm tanımını içermeyeceğini unutmayın. Yani yo oluşturmak gibi bir görünüm olsaydı oluşturmak görünüm v1 seçin a. idAS id, a. Tl'den created_dateAS created_date; --no-data seçeneği ile, görünüm tanımı aşağıdaki görünüm oluştur olarak değiştirilecektir v1 1 AS id, 1 AS seçincreated_date



2

IntelliJ kullanıyorsanız, Veritabanı görünümünü etkinleştirebilirsiniz (Görünüm -> Araçlar Penceresi -> Veritabanı)

Bu görünümün içinde veritabanınıza bağlanın. Ardından veritabanına sağ tıklayıp "DDL Kopyala" yı seçebilirsiniz. Diğer IDE'ler benzer bir işlev sunabilir.

IntelliJ DDL


2

2

Tüm veritabanlarındaki tüm tabloları dökmek istiyorsanız ve veri olmadan (yalnızca veritabanı ve tablo yapıları) kullanabilirsiniz:

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

Bu, yeni bir veritabanı oluşturmak için bir mysql sunucusuna yükleyebileceğiniz bir .sql dosyası oluşturur. Bunun için kullanım senaryoları bir üretim ortamında çok fazla değil, ancak bunu demo web sitelerine bağlı sunucuları sıfırlamak için haftalık olarak yapıyorum, bu yüzden kullanıcılar hafta boyunca ne yaparlarsa yapsın, pazar geceleri her şey "yeni" ye geri dönüyor: )


1

Tek bir tablonun oluşturma komut dosyasını almak için:
- tüm tabloyu seçin (shift tuşuyla)
- tablo adına sağ tıklayın ve Panoya Kopyala> Deyim Oluştur'a tıklayın.


0

kabuk> mysqldump - veri yok - yordamlar - olay testi> dump-defs.sql


1
StackOverflow'a hoş geldiniz. Biraz daha fazla bilgi ve kısıtlama verirseniz, bu konuda harika bir cevap verebilirsiniz.
Janhoo

0

Depolanan rutin ve olay tanımlarını da eklemek için --routines ve --events seçeneklerini ekleyin

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

-1

Aşağıdaki yöntemi kullanarak alabilirsiniz

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

Umarım sana yardımcı olur


6
Bu cevap, diğer cevabın daha önce söylemediği hiçbir şey eklemiyor.
Daniel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.