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 :

[SQL] Analyser un fichier SQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [SQL] Analyser un fichier SQL
    Salut

    Je voudrais pasrser un fichier contenant des requêtes SQL (dans le genre des exportés depuis phpMyAdmin) afin de récupérer chacune des requêtes.

    J'ai essayé avec une expression régulière mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match_all('#^(CREATE|INSERT|ALTER|DROP)([[:print:]]+)(;)$#mi', $str, $res);
    J'ai aussi pensé à utiliser la fonction explode et d'utiliser ; comme séparateur mais le cas où des données contiendraient des ; , je suis dans la m...
    A moins de vérifier que l'élément suivant du tableau est bien une nouvelle requête.


    Merci d'avance pour votre aide

    Joyeux Noël

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    tu as besoin de faire ça pour quoi ?

    Pour l'algorithme de découpage, tu peux regarder dans le code source de phpMyAdmin

  3. #3
    Invité
    Invité(e)
    Par défaut
    L'une des fonctionnalité d'une application que je développe est la possibilité de sauvegarder/restaurer la base de données.

    J'ai finalement procédé ainsi :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <?php
                //séparation des requêtes
    	    $lines = explode(";", $result);
     
                //suppression de la dernière ligne (vide)
    	    array_pop($lines);
     
    	    //on vérifie qu'on ait pas coupé la chaine au milieu d'une requête (si les données contiennent des ;)
    	    $nb = count($lines);
    	    for($i=0; $i<$nb; $i++) {
     
    	    	$current = $i;
     
    	    	//si la ligne suivante n'existe pas
    	    	if(!isset($lines[$i+1])) {
    	    		break;
    	    	}
     
    	    	//tant que la ligne suivante n'est pas le début d'une nouvelle requête
    	    	while(strpos($lines[$i+1], "CREATE") === false 
    	    			&& strpos($lines[$i+1], "DROP") === false 
    	    			&& strpos($lines[$i+1], "ALTER") === false 
    	    			&& strpos($lines[$i+1], "INSERT") === false) {
     
    	    		$lines[$current] .= ';'.$lines[$i+1];
    	    		unset($lines[$i+1]);
    	    		$i++;
    	    	}
    	    }
    ?>
    ça ne gère pas tous les cas de requêtes possibles avec mysql mais c'est suffisant pour mon application.


    Si quelqu'un a tout de même une solution avec un regex, ça m'intéresse aussi.


    A+

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

Discussions similaires

  1. Appel fichier SQL via un fichiers SQL
    Par tibjedi dans le forum Administration
    Réponses: 2
    Dernier message: 03/03/2011, 11h17
  2. [SQL] Executer un fichier .sql avec php
    Par Mouchi93 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/08/2007, 16h08
  3. Exécution d'un fichier SQL dans un fichier JSP
    Par Tyrael62 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/07/2007, 17h29
  4. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15
  5. [SQL] Importer un fichier sql depuis PHP
    Par TNorth dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/05/2006, 18h39

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