John_attend Posté 1 Avril 2008 Posté 1 Avril 2008 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
Dan Posté 1 Avril 2008 Posté 1 Avril 2008 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.
Kioob Posté 1 Avril 2008 Posté 1 Avril 2008 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.
John_attend Posté 2 Avril 2008 Auteur Posté 2 Avril 2008 Ok, c'est aussi ce à quoi j'avais pensé. Merci de vos réponses
ephagor Posté 27 Mai 2008 Posté 27 Mai 2008 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.
John_attend Posté 27 Mai 2008 Auteur Posté 27 Mai 2008 (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é 27 Mai 2008 par John_attend
ephagor Posté 27 Mai 2008 Posté 27 Mai 2008 (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é 27 Mai 2008 par ephagor
Dan Posté 27 Mai 2008 Posté 27 Mai 2008 Tu peux sans problème éditer ce fichier, et remplacer le nom de la base qui se trouve après le CREATE ...
ephagor Posté 27 Mai 2008 Posté 27 Mai 2008 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.
Dan Posté 27 Mai 2008 Posté 27 Mai 2008 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....
ephagor Posté 27 Mai 2008 Posté 27 Mai 2008 oui j'ai acces au shell sans probleme seulement je ne m'y connais pas assez en commande pour faire le split moi-meme.
Dan Posté 27 Mai 2008 Posté 27 Mai 2008 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
ephagor Posté 27 Mai 2008 Posté 27 Mai 2008 (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é 27 Mai 2008 par ephagor
Dan Posté 27 Mai 2008 Posté 27 Mai 2008 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant