Aller au contenu

Restauration d'un backup avec la commande "mysql"


Sujets conseillés

Posté

Bonjour à tous !

Mon problème est simple. Pour mes export de base de données, j'utilise la commande mysqldump en sauvegardant toute ma base de données.

Pour la restaurer à partir de ces backup, j'utilise la commande mysql database < fichier.sql.

Mais j'aimerais ne pouvoir restaurer que certaines tables. Je sais qu'il n'est possible d'exporter que certaines tables avec mysqldump, mais je ne vois pas comment ne restaurer que certaines tables.

Il n'est par exemple pas possible de faire mysql --database=mabase --tables table1 table2 table3 < fichier.sql.

Quelqu'un saurait comment faire ça ??

Merci d'avance

Posté

Et non, ce n'est pas possible.

Tu peux éditer le fichier sql d'export en y supprimant les tables que tu ne veux pas écraser... c'est la seulesolution.

Posté

Hello,

plusieurs solutions à priori :

- éditer le fichier source, comme l'indique Dan. Selon la taille de la base, ce peut être la solution la plus rapide/simple.

- scinder le fichier source en tables via un script automatique (je m'en suis fait un perso, pratique pour les grosses bases).

- recharger la sauvegarde vers une seconde base, puis "déplacer" les tables via phpMyAdmin. C'est la méthode que mes clients préfèrent : je recharge juste dans la base secondaire, et ils se débrouillent depuis leur phpmyadmin.

  • 1 month later...
Posté

Bonjour,

j'ai exactement le meme probleme cependant mon fichier de sauvegarde est beaucoup trop volumineux. malgré tout j'aurai souhaité tout recharger vers une seconde base comme précisé seulement le problème est que mon fichier .sql inclut la création de la table principale (create database if not exist...'). Ma question est que si je charge ce fichier sur une autre base, cela va-t-il fonctionner ou alors cela va faire les manipulation sur ma base principale ?

Si tel est le cas, je souhaiterai éditer la ligne qui crée la database pour changer le nom seulement je n'arrive pas à le faire car mon fichier est trop volumineux et je ne peux donc pas l'ouvrir directement via emacs ou autre.

Merci de votre aide.

Posté (modifié)

Si tu restaures le dump sur une autre base temporaire je vois pas pourquoi cela affecterait les tables de la base principale...

Par contre penses bien à préciser un nom de base différent que celle sauvegardée lors de la restauration, sinon ça va tout restaurer sur ta base principale ;)

Modifié par John_attend
Posté (modifié)

c'est justement ça le problème. dans mon fichier de restauration "backup.sql", il y a une commande qui crée la base 'create database....' qui porte le nom de ma base principale. j'ai donc peur que si j'importe ce fichier, cela va remplacer ma base principale. Or je veux restaurer ce fichier d'abord sur une base secondaire et ensuite faire mes manipulations à la main.

EDIT : mon seul soucis en fait c'est que je veux uniquement restaurer 2 table de ma base. seulement je ne possède qu'un dump complet et ma base est relativement volumineuse pour m'empecher d'éditer le fichier

Modifié par ephagor
Posté

Tu peux sans problème éditer ce fichier, et remplacer le nom de la base qui se trouve après le CREATE ...

Posté
Tu peux sans problème éditer ce fichier, et remplacer le nom de la base qui se trouve après le CREATE ...

Justement je ne peux pas car mon fichier est trop volumineux.

Posté

As-tu accès au shell sous Linux ?

Dans ce cas c'est facile... un coup de "split" suivi par une édition du premier fichier et une re-concaténation des fichiers....

Posté

Tout simplement un "split --lines=1000 nom_fichier_sql"

Ensuite tu édites le fichier nommé "xaa"

Et tu re-concatènes le tout avec "cat x?? > nome_du_fichier_sql_édité"

Si cela te génère trop de fichiers... (xaa, xab ... xzz) et que la commande split te donne une erreur, augmente le nombre de lignes par fichier après avoir supprimé les fichiers x??

1000 est la valeur par défaut pour le nombre de lignes.

Dan

Posté (modifié)

ok je vais tester ça.

Merci

EDIt : pour le cat il faut que je précise à la suite tous les fichiers générés ? ex : cat xaa xab xac xad... > mon_fichier.sql ?

Modifié par ephagor
Posté

Non, un simple cat x?? te donnera tous les fichiers dans le bon ordre ;)

Tu peux toujours faire un "echo cat x??" et tu verras ce qu'il va lancer.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...