MySQL

2011-07-06 21 views
32

'daki bir veritabanındaki tüm tablolar için DDL nasıl oluşturulur Bir kerede MySQL veritabanındaki tüm tablolar için DDL nasıl oluşturulur. Aşağıdaki sorgunun bir tablo için DDL'yi çıkaracağını biliyorum. Ancak tüm tabloların DDL'sini bir kerede istiyorum çünkü veritabanımda yüzlerce tablo var. ÖrneğinMySQL

show create table <database name>.<table name>; 

:

show create table projectdb.customer_details; 

Yukarıdaki sorgu customer_details tablonun DDL neden olur.

Windows işletim sisteminde MySQL MySQL workbench kullanıyorum.

cevap

57

Sen Mysqldump komut satırı yardımcı programını kullanarak bunu yapabilirsiniz:

mysqldump -d -u <username> -p<password> -h <hostname> <dbname> 

-d seçenek "verisi olmadan" anlamına gelir.

+0

Hata alıyorum. İşte benim buyruğum: mysqldump -d -u root -p pps -h 127.0.0.1 shopping_store; – Pargat

+4

Aldığınız hata nedir? Muhtemelen "-p" ile şifreniz arasındaki boşluk yüzünden olabilir. – Swapnil

+3

Desteklendi. Cevabınızda sadece bir sözdizimi hatası var. '-p' seçeneği bir argümanı kabul etmez, bu yüzden bu seçenek işaretinden sonra parolanızı yazmayı denerseniz, mysqldump bunu veritabanı adı olarak yorumlayacaktır. Sadece ' 'olmadan kullanın, komutu çalıştırdıktan sonra istenecektir. – tftdias

-1

Tüm tabloların listesini veritabanında almalı ve sonra bu sorguyu çalıştırmalısınız. onay bu bağlantıyı tüm tabloların listesini almak için:

konu şifre olarak -p ve 'pps' arasındaki boşluk oldu: http://php.net/manual/en/function.mysql-list-tables.php

+0

Bu işlev, PHP 5.5'ten itibaren kullanımdan kaldırılmıştır. Onlar yerine ("somedb" anlamına geliyordu düşünüyorum) "bazı masaüstünden göstermek masaları" kullanmanızı öneririz. – Ben

0

@tftdias yukarıda kısmen doğru bir yorum yaptı. Komut satırında şifrenizi kesinlikle kullanabilirsiniz. Genel bir güvenlik kuralı olarak yapmamalısın. Linux'ta, uygun bir yapılandırmayla, komut satırınızdaki ilk karakterden önce bir boşluk ("") ekleyebilir ve bu çizgi 'geçmişe' girmeyecektir. Parolanızı temizlediğinizde (bunu yapma!), Parolanın görünür geçmişte olmaması için en azından bir boşluk koymanızı öneririm.