2009-12-03 9 views
31

J'essaie d'utiliser mysqldump pour exporter uniquement le schéma de base de données - pas de données, pas de commentaires SQL supplémentaires, juste les commandes CREATE TABLE. Voici ce que j'ai jusqu'à présent:Comment utiliser mysqldump pour exporter uniquement les commandes CREATE TABLE?

mysqldump -h localhost -u root -p --no-data --compact some_db 

Il réalise presque ce que je veux, mais j'aimerais éliminer les lignes « caractère de réglage » (ceux qui, comme les 3 premières lignes dans la sortie exemple ci-dessous). Y at-il une option mysqldump pour le faire?

/*!40101 SET character_set_client = @saved_cs_client */; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `foo` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `bar_id` int(11) DEFAULT NULL, 
    `bazz` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=369348 DEFAULT CHARSET=latin1; 
/*!40101 SET character_set_client = @saved_cs_client */; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `bar` (
...etc. 

Voici mon numéro de version, en cas qui importe:

mysqldump Ver 10.13 Distrib 5.1.34, for Win32 (ia32) 
mysql Ver 14.14 Distrib 5.1.34, for Win32 (ia32) 
+1

Ne pourriez-vous utiliser plus simplement la requête SQL SHOW CREATE TABL tbl_nameE' (voir http://dev.mysql.com/doc/refman/5.0/en/show-create-table.html) – Romain

Répondre

22

Il utilise grep aussi bien, mais il semble fonctionner:

mysqldump -d --compact --compatible=mysql323 ${dbname}|egrep -v "(^SET|^/\*\!)" 

J'utilise:

Ver 10,11 Distrib 5.0.51a, pour debian- linux-gnu (x86_64)

+9

-d est --no-data donc cela devrait répondre à la question –

+0

super aide thx! – Shide

9

est la commande Ici pour vider le schéma sans le jeu de caractères et AUTO_INCREMENT.

mysqldump -h localhost -u root -p --no-data YOUR_DATABASE_HERE |egrep -v "(^SET|^/\*\!)" | sed 's/ AUTO_INCREMENT=[0-9]*\b//' 

Voici la commande pour vider le schéma sans le jeu de caractères, AUTO_INCREMENT et les commentaires

mysqldump -h localhost -u root -p --no-data --compact YOUR_DATABASE_HERE |egrep -v "(^SET|^/\*\!)" | sed 's/ AUTO_INCREMENT=[0-9]*\b//' 
4
mysqldump --compact --no-set-names --skip-opt --no-data DB | sed "/ SET /d" 
+0

Mauvaise idée: https://dev.mysql.com/doc/refman/5.7/fr/set.html – miken32

4
mysql> SHOW CREATE TABLE mytablename; 
Questions connexes