IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Restauration de la base de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Restauration de la base de données
    Bonjour !!

    J'essais de faire une partie restauration de la base de données dans un site web et pour cela, je supprime toutes les base de données existantes, ensuite je récupère un fichier sql qui contient mes requêtes et je l'exécute grâce à ce script trouvé sur ce même forum (je ne sais plus trop ou...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    //Connexion à la base de données
    $connexion = mysql_connect($_POST['new_hote'], $_POST['new_login'], $_POST['new_password']);
    mysql_select_db($_POST['new_base'], $connexion);
     
    $requetes="";
     
    $sql=file("../temp/".$fichier_sql); // on charge le fichier SQL
    foreach($sql as $l)
    { // on le lit
    	if (substr(trim($l),0,2)!="--"){ // suppression des commentaires
    		$requetes .= $l;
    	}
    }
     
    $reqs = split(";",$requetes);// on sépare les requêtes
    foreach($reqs as $req){	// et on les éxécute
    	if (!mysql_query($req,$connexion) && trim($req)!=""){
    		die("ERROR : ".$req); // stop si erreur
    	}
    }
    Malheureusement, il sépare chaque requête à l'aide du ; et il se peut que dans INSERT INTO on retrouve des valeurs comme é. Ca ne fonctionne alors plus du tout.

    Je ne sais pas comment me sortir de ce problème....

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Salut,

    Peut être devrais tu regarder les sources de PhpMyAdmin car celui-ci gère parfaitement l'import de données via un fichier de requetes SQL.

    En plus tu n'auras pas à ré inventer la roue.

    bye

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonne idée. Je vais allé voir cela de plus près.

    Si quelqu'un à la solution, qu'il ne se gêne pas de la poster.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re-bonjour !

    Personne n'a déjà fait un petit script de restauration de base de données ? Quand je vois l'usine à gaz qu'utilise phpmyadmin ça me fait un peu peur de me lancer là-dedans...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Salut,

    Hmm dommage.. Dès fois il y à de très bonne chose dans cet outils. Sinon pour te répondre, j'avoue que j'aimerais bien, mais comme toi, l'histoire des points virgules à tuer l'idée bien avant que je ne commence à envisager une telle chose.

    Et puis comme j'ai la chance de travailler essentiellement dur du dédié, ben j'utilise une commande systeme. C'est terriblement efficace. Mais pas du tout ce que tu cherches à faire.

    bye

  6. #6
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    Ton backup a quelle forme ? juste des données, ou bien des requêtes sql ?
    Pour faire des sauvegardes, c'est nettement mieux d'utiliser l'utilitaire mysqldump, et pour les restaurer d'utiliser la commande LOAD DATA.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par guidav Voir le message
    Ton backup a quelle forme ? juste des données, ou bien des requêtes sql ?
    Pour faire des sauvegardes, c'est nettement mieux d'utiliser l'utilitaire mysqldump, et pour les restaurer d'utiliser la commande LOAD DATA.
    il a en gros cette forme :

    --
    -- Structure de la table 'pmx_news'
    --

    CREATE TABLE IF NOT EXISTS pmx_news (
    pk_new int(6) NOT NULL auto_increment,
    titre_new varchar(100) NOT NULL,
    date_new date NOT NULL default '0000-00-00',
    cont_new text NOT NULL,
    PRIMARY KEY (pk_new),
    UNIQUE KEY titre_new_2 (titre_new),
    KEY titre_new (titre_new),
    KEY date_new (date_new)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    --
    -- Contenu de la table 'pmx_news'
    --

    INSERT INTO pmx_news (pk_new, titre_new, date_new, cont_new) VALUES
    (71, 'Le site est en ligne', '0000-00-00', 'Le site est officiellement en ligne. Nous attendons vos diff&eacute;rentes remarques.<br type=\\"_moz\\" />'),
    (72, '10000 visiteurs !!!', '0000-00-00', 'En seulement une semaine, nous avont d&eacute;pass&eacute; les 10\\''000 visiteurs. Nous vous remercions de l\\''int&eacute;r&ecirc;t que vous porter &agrave; notre projet.<br type=\\"_moz\\" />');
    sauf qu'il y a 13 autres tables.

    Peux-tu m'en dire plus sur mysqldump et LOAD DATA ? Ou me donner un lien vers une explication ?

  8. #8
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    Ton backup est bien un script sql, à exécuter tel quel mais l'encodage peut être gênant en effet.
    Mysqldump est un utilitaire fourni avec le serveur, qui permet de sauvegarder les bases, la doc est ici : http://dev.mysql.com/doc/refman/5.0/fr/mysqldump.html

    Pour recharger le fichier, le mieux est d'exécuter le script directement en ligne de commande, si tu en as la possibilité.

    LOAD DATA sert à recharger des données au format texte (sans les commandes INSERT), mais ce n'est pas ton format de fichier visiblement.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par guidav Voir le message
    Ton backup est bien un script sql, à exécuter tel quel mais l'encodage peut être gênant en effet.
    Mysqldump est un utilitaire fourni avec le serveur, qui permet de sauvegarder les bases, la doc est ici : http://dev.mysql.com/doc/refman/5.0/fr/mysqldump.html

    Pour recharger le fichier, le mieux est d'exécuter le script directement en ligne de commande, si tu en as la possibilité.

    LOAD DATA sert à recharger des données au format texte (sans les commandes INSERT), mais ce n'est pas ton format de fichier visiblement.
    Le problème c'est que je n'ai pas accès aux commandes puisque le serveur est celui de mon hébergeur. Je cherche à restaurer ma base depuis PHP

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Et puis j'imagine que le but est de pouvoir utiliser ton script sur du mutu. Donc il ne faut pas compter sur les supers outils de mysql :s

    Quoi qu'il en soit, une regexp ne peut elle pas faire l'affaire ?
    Quelque chose comme :
    Scinder la chaine à chaque point virgule, sauf quand il est entre quotes.

    Qui pourrait donner :
    Mais je ne suis pas très bon en expreg donc c'est peut être faux...

    Il y à ce problème à régler, qui est de taille, et puis il y en à autre qui est de pouvoir lire des gros fichiers.
    Mais cela est moins problématique et peut se régler facilement.

    bye

    Edit : .... A relire ma regexp elle est complement bidon... Mais je laisse cela à d'autres car je suis pas bon du tout à ce truc.

  11. #11
    Invité
    Invité(e)
    Par défaut
    je suis tombé sur ce script qui apparemment fonctionne.

    Je vais essayé de l'adapter à mon site et je vous tiens au courant

  12. #12
    Invité
    Invité(e)
    Par défaut
    C'est bon !! J'ai réussi à résoudre mon problème à l'aide du script cité précédemment !!

    Merci à tous pour votre aide

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Hey tu nous le déposent sur DVP dans la prtie scripts stp ?

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. restauration tables de base de données
    Par djul2003 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/01/2008, 18h43
  2. pb des restauration d'une base de données
    Par yanis97 dans le forum Administration
    Réponses: 1
    Dernier message: 30/05/2007, 11h37
  3. [ASE]Restauration d'une base de données sybase
    Par ICParis dans le forum Sybase
    Réponses: 1
    Dernier message: 08/12/2006, 15h43
  4. Réponses: 1
    Dernier message: 25/07/2006, 14h39
  5. Réponses: 4
    Dernier message: 03/02/2006, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo