Comment prendre la sauvegarde d'une seule table dans une base de données MySQL?


442

Par défaut, mysqldumpprend la sauvegarde d'une base de données entière. J'ai besoin de sauvegarder une seule table dans MySQL. C'est possible? Comment le restaurer?

Réponses:


838

Vider et restaurer une seule table à partir de .sql

Déverser

mysqldump db_name table_name > table_name.sql

Dump à partir d'une base de données distante

mysqldump -u <db_username> -h <db_host> -p db_name table_name > table_name.sql

Pour plus d'informations:

http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

Restaurer

mysql -u <user_name> -p db_name
mysql> source <full_path>/table_name.sql

ou en une seule ligne

mysql -u username -p db_name < /path/to/table_name.sql


Vider et restaurer une seule table à partir d'un format compressé (.sql.gz)

Crédits: John McGrath

Déverser

mysqldump db_name table_name | gzip > table_name.sql.gz

Restaurer

gunzip < table_name.sql.gz | mysql -u username -p db_name


14
SQL compresse généralement bien - vous pouvez diriger la commande ci-dessus via gzip et le fichier résultant sera beaucoup plus petit: mysqldump db_name table_name | gzip > table_name.sql.gz pour restaurer: gunzip < table_name.sql.gz | mysql -u username -p db_name
John McGrath

Que faire si vous souhaitez inclure le mot de passe sur la ligne de commande? Vous utilisez donc déjà -pPASSWORD
Freedo

24

mysqldump peut prendre un paramètre tbl_name, de sorte qu'il ne sauvegarde que les tables données.

mysqldump -u -p yourdb yourtable > c:\backups\backup.sql

15

essayer

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • $ line cotent names tables;)

1
C'est pratique pour vider une base de données dans des requêtes de table séparées - puis-je savoir exactement ce que font les options?
xiankai

Bonjour, -AN (- no-auto-rehash, -A | --skip-column-names, -N Ne pas écrire les noms des colonnes dans les résultats.) -E (- execute = statement, -e statement | Execute the Le format de sortie par défaut est comme celui produit avec --batch.) fuente: dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
Robin Gomez

12

Nous pouvons prendre un vidage mysql de n'importe quelle table particulière avec n'importe quelle condition donnée comme ci-dessous

mysqldump -uusername -p -hhost databasename tablename --skip-lock-tables

Si nous voulons ajouter une condition where spécifique sur la table, nous pouvons utiliser la commande suivante

mysqldump -uusername -p -hhost databasename tablename --where="date=20140501" --skip-lock-tables

8

Vous pouvez facilement utiliser pour vider les tables sélectionnées en utilisant MYSQLWorkbench tool, individuellement ou un groupe de tables à un vidage puis les importer comme suit: vous pouvez également ajouter des informations sur l'hôte si vous les exécutez dans votre section locale en ajoutant -h IP.ADDRESS.NUMBER après-u Nom d'utilisateur

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 

Malheureusement, Mysql Workbench a des problèmes de fuite qui peuvent conduire à l'exportation de données invalides qui sont inutiles ...
barell

6

Vous pouvez utiliser ce code:

Cet exemple prend une sauvegarde de la base de données sugarcrm et sauvegarde la sortie dans sugarcrm.sql

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Le fichier sugarcrm.sql contiendra une table de dépôt, une table de création et une commande d'insertion pour toutes les tables de la base de données sugarcrm. Voici une sortie partielle de sugarcrm.sql, montrant les informations de vidage de la table accounts_contacts:

-

- Structure de table pour table accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--

5

Vous pouvez utiliser le code ci-dessous:

  1. Pour la sauvegarde d'une structure de table unique

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. Pour une structure de table unique avec des données

-

mysqldump <database name> <tablename> > <filename.sql>

J'espère que cela vous aidera.


5

Vous pouvez soit utiliser à mysqldumppartir de la ligne de commande:

mysqldump -u username -p password dbname tablename > "path where you want to dump"

Vous pouvez également utiliser MySQL Workbench:

Allez à gauche> Exportation de données> Sélectionnez le schéma> Sélectionnez les tables et cliquez sur Exporter


juste une petite info, omettre l'espace entre -p et le mot de passe -> -ppassword, mais ce n'est pas sûr
Agung Sagita
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.