web-dev-qa-db-fra.com

Comment puis-je sauvegarder une structure de table mais pas ses données dans mysql

J'utilise Administrateur MySQL pour faire ma sauvegarde de la base de données. Je peux parfaitement sauvegarder toute la base de données avec toutes ses tables. Il y a des tables dont la taille est très grosse alors je me demande si je ne pouvais que sauvegarder la structure des tables (seuls leurs éléments) mais pas leurs données.

20
user16629

Utilisez le --no-data Basculez avec MySqldump pour le dire de ne pas vider les données, seule la structure de la table.

Cela émettra l'instruction Create Table pour les tables.

Quelque chose comme ça

mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql

Pour cibler des tables spécifiques, entrez-les après le nom de la base de données.

mysqldump --no-data -h localhost -u root -ppassword mydatabase table1 table2 > mydatabase_backup.sql

http://dev.mysql.com/doc/refman/5.1/fr/mysqldump.html#option_mysqldump_no-data

http://dev.mysql.com/doc/refman/5.1/fr/mysqldump.html

40
LukeR

comme Luker l'a dit, l'option --No-Données pour MySqldump fera ce que vous voulez.

pour ajouter à cela, voici un script de sauvegarde que j'ai écrit qui décharge toutes les bases de données MySQL aux fichiers texte simples et crée des fichiers de bulletins séparés pour chaque schéma de table et données de la base de données (il est assez courant de vouloir restaurer ou créer les tables sur un autre serveur MySQL sans les données, et c'est beaucoup plus facile à faire lorsque vous avez déjà un petit fichier avec juste l'index de la table Create/Créer des commandes, etc.)

 #! /bin/bash
#.]# backup-mysql.sh [.____] # 
 # Craig Sanders <[email protected]> [.____] Le script est dans le domaine public. fais ce que tu veux avec ça. 
 [.____] Myuser = "Nom d'utilisateur" 
 mypwd = "passwd" 
 
 argense = "- une transaction unique --FLUSH-BOGS --COMPETE-INSERT "[.____] [.____] [ Information_schema '); 
 
 
 BackupDir =/var/sauvegarde/mysql 
 [.] Année = $ (Date + "% Y") 
 Mois = $ (date + "% m") 
 Jour = $ (date + "% d") [.____] [.] Date = "$ US - $ mois/$ $ Année - $ mois mois- $ jour "[.____] [.____] [.____] MKDIR -P $ backupDir/$ date 
 CD $ BACKUPDIR/$ DATE [.____] car $ De bases de données; faire 
 echo -n "sauvegarde de $ i: schéma ..." [ ( -P $ mypwd $ i> $ i.data.sql 
 
 echo -n "compression ..." [.____] gzip -9fq $ i.schema.sql $ i.data .sql 
 echo "fait". [.____] fait [.____] 
 
 # Supprimer des fichiers de sauvegarde de plus de 30 jours [. D -MTime +30) [.____] Si [-N "$ old"]; alors 
 Echo Supprimer les anciens fichiers de sauvegarde: $ old [.____] echo $ vieux | xargs rm -rfv 
 fi 
3
cas

Vous pouvez également le faire manuellement à travers l'interface de commande mysql en faisant un DESCRIBE <tablename> et copier/coller les résultats.

0
warren