Copier une base de données avec PHP

Eléphanteau du PHP | 17 Messages

11 oct. 2007, 12:29

Bonjour à tous,

Je voudrais copier une base de données MySQL d'un serveur à un autre avec PHP (sans acceder à l'outil PhpMyAdmin). Comment pourrais-je générer le fichier qui contient les instructions nécessaires pour reconstruire la base de données ?

Merci pour votre aide.

Eléphanteau du PHP | 21 Messages

12 oct. 2007, 11:36

Salut tout le monde,
j'ai le même souci, j'attends vos réponses SVP
Merci d'avance
L'échec est l'épice qui donne sa saveur au succès.

d0m
Mammouth du PHP | 1141 Messages

12 oct. 2007, 11:46

en php tu peux :
- lister les tables d'une base
- selectionner leurs champs
- selectionner les données d'une table

et d'autre part :
- créer des tables
- insérer des données

il suffit donc pour chaque table de la base à copier de lister les champs,
créer la table sur la nouvelle base,
selectionner toutes les données de la table à copier et les insérer dans la nouvelle table.

Eléphanteau du PHP | 17 Messages

12 oct. 2007, 11:54

bonjour,

Je vous remercie pour votre réponse. Je voudrais générer un fichier .sql qui serait exécuté sur le serveur de destination, tout comme le fait le SQL Dump de PhpMyAdmin. Est-ce qu'il y a un moyen de le faire avec une instruction php ? Je donne le nom de la base de données et il me génère un fichier .sql qui contient toutes les informations qu'il faut pour reconstruire la base de données (structure et contenu) dans l'autre serveur.

Merci beaucoup pour votre aide.

d0m
Mammouth du PHP | 1141 Messages

12 oct. 2007, 12:06

il me sembl que le fichier .sql est une suite de requête :

Code : Tout sélectionner

CREATE table ..... INSERT INTO ... .....
il suffit donc :
- d'ouvrir en écriture un fichier de nom blablabla.sql
- à partir de ta base, lister les tables avec leurs champs
- écrire dans le fichier blablabla les requêtes SQL de création de table correspondants aux tables listées
- pour chaque table sélectionner toutes les lignes
- pour chaque ligne écrire dans le fichier blablabla la requête SQL correspondant à l'insertion de la ligne dans la table

et voilà, il faut donc faire un script qui automatise ça.

Eléphanteau du PHP | 21 Messages

12 oct. 2007, 12:11

bonjour,
merci pour les réponses, j'aimerais savoir comment lister les tables avec leurs champs sous forme de requêtes SQL
L'échec est l'épice qui donne sa saveur au succès.

d0m
Mammouth du PHP | 1141 Messages

12 oct. 2007, 12:44

j'aimerais savoir comment lister les tables avec leurs champs sous forme de requêtes SQL
pour les lister va voir du coté de la fonction mysql_fetch_field dans le manuel
ensuite, les requêtes il faut les créer à partir de ces données sous forme de chaines de caractère.

Eléphanteau du PHP | 17 Messages

12 oct. 2007, 12:49

oui mais comment faire des requêtes SQL avec ? Il n'y a pas une fonction qui le fait directement ?

ViPHP
ViPHP | 2144 Messages

12 oct. 2007, 12:50

Aller jeter un coup d'oeil dans le code de phpMyAdmin, pour s'inspirer peut également être intéressant...

Eléphant du PHP | 443 Messages

12 oct. 2007, 12:52

Pourquoi ne pas exécuter mysqldump depuis php pour copier la base ?

Eléphanteau du PHP | 17 Messages

12 oct. 2007, 12:56

iclo > Le problème c'est comment trouver le fichier qui le fait puisque PhpMyAdmin est fait avec les frames :?
c'est toujours "http://localhost/mysql/" quelque soit la page

Tracker > C'est ce que je veux exactement, mais comment le faire ?

Eléphant du PHP | 443 Messages

12 oct. 2007, 13:02

iclo > Le problème c'est comment trouver le fichier qui le fait puisque PhpMyAdmin est fait avec les frames :?
c'est toujours "http://localhost/mysql/" quelque soit la page

Tracker > C'est ce que je veux exactement, mais comment le faire ?
Je répondrai naïvement avec la fonction:
string exec ( string command [, array &output [, int &return_var]] )
Regarde dans la doc la rubrique "Exécution de programmes externes" pour plus d'info...

[edit]
En même temps c'est pas évident que ton hébergeur autorise ce type de manip...

ViPHP
ViPHP | 4039 Messages

12 oct. 2007, 13:07

iclo > Le problème c'est comment trouver le fichier qui le fait puisque PhpMyAdmin est fait avec les frames :?
c'est toujours "http://localhost/mysql/" quelque soit la page
Si rien que ça c'est déjà un problême, le reste va être chaud chaud..

hint: click droit dans le cadre, et n'afficher que le cadre (sous FF)

Ou tout simplement, lire le html.. (ctrl-u sous FF, affichage -> source sous IE)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 17 Messages

12 oct. 2007, 13:11

ça serait vraiment super si je peux exécuter mysqldump avec cette fonction, mais je ne sais pas quoi mettre dans "command" :(

ViPHP
ViPHP | 4039 Messages

12 oct. 2007, 14:36

Sans vouloir être arrogant, mais tu as cherché un peu ?

C'est en chercheant des solutions qu'on apprend le plus, pas en attendant que tombe la solution toute faite.

Une simple recherche avec google peut déjà fournir une ribambelle de pistes.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.