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 :

Création d'un DUMP ordonné


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut Création d'un DUMP ordonné
    Bonjour,

    je viens de concevoir une fonction qui génère le dump (sauvegarde des tables) d'une BDD relationnelle.
    Ma fonction marche parfaitement mais elle n'est pas très productive/optimisée car celle ci le dump est généré bêtement....
    C'est à dire que les tables + contenus sont incorporés dans le dump par ordre alphabétique.

    Le problème est que ma base est relationnelle avec quelques clés étrangères. Du coup, l'importation rapide est impossible car il faut un ordre logique pour le DROP et le CREATE...

    Je cherche donc le moyen d'ordonner logiquement ce dump.
    Merci d'avance pour vos lumières.

    @ bientôt

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Hm. Je ne me sert pas des fk (han c'est mal), donc je vais peut être dire une connerie.

    Mais dans ton export, pourquoi ne pas créer les tables sans FK, procéder à l'insertion, puis ré intégrer les fk"s.

    Non ?

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    c'est une idée pas bête...
    le souci est que je récupère la structure de mes tables via SHOW CREATE TABLE ma_table ce qui me génère automatiquement des trucs du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `t_personne` (
      `id` smallint(5) unsigned NOT NULL auto_increment,
      `nom` varchar(50) NOT NULL,
      `prenom` varchar(50) NOT NULL,
      `adresse` varchar(255) NOT NULL,
      `id_ville` smallint(5) unsigned default NULL,
      PRIMARY KEY  (`id`),
      KEY `nom` (`nom`),
      KEY `prenom` (`prenom`),
      KEY `id_ville` (`id_ville`),
      CONSTRAINT `t_personne_ibfk_1` FOREIGN KEY (`id_ville`) REFERENCES `t_ville` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    salut,
    Hey au fait t'es aller voir la doc ? Par hasard. Genre pour chercher une commande pour désactiver temporairement la vérification des fk's.
    Genre ça en faits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET FOREIGN_KEY_CHECKS = 0;
    SOURCE dump_file_name;
    SET FOREIGN_KEY_CHECKS = 1;
    En plus sa tombe bien c'est une variable serveur dynamique, ce qui signifie en gros qu'elle ne nécessite pas de droits spécifiques pour être modifiée.
    http://dev.mysql.com/doc/refman/5.1/...ign_key_checks

    a plus

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    effectivement cela fonctionne... merci pour l'astuce kaymak !

    cependant, je suis un peu pointilleux et je me suis rendu compte qui me chagrine.
    J'ai testé l'importation d'une base complète avec des erreurs volontaires. J'aurais espéré que SET FOREIGN_KEY_CHECKS = 1; vérifie l'intégrité mais cela n'est pas le cas...

    Cette astuce me plait donc qu'à moitié, mais elle a le mérite de dépanner.

    Je suis donc à la recherche d'un algorithme en PHP capable de trouver l'ordre de création des tables.

    @+

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par Tchupacabra Voir le message

    J'ai testé l'importation d'une base complète avec des erreurs volontaires. J'aurais espéré que SET FOREIGN_KEY_CHECKS = 1; vérifie l'intégrité mais cela n'est pas le cas...
    Hm. Oui, c'est le but de cet variable.

    Maintenant vis-à-vis de ton souhait de faire l'import avec les fk's pour valider les données des tables.
    En faits je me pose la question suivante.
    Comment ferais tu pour gérer l'import d'une table A ayant une fk sur la table B, qui à elle même une fk sur la table A.
    C'est empirique, et peut être fort impossible dans la vrai vie.
    Mais c'est un cas probable, puisque permit par le moteur de mysql, encore une fois je ne m'en sert pas habituellement, donc je peux me tromper.

    Cependant dans une telle situation, tu peux l'ordonner dans les deux sens, A B ou B A.
    Cela ne fonctionnera pas, ou sera sujet à une grande part d'inconnu.

    Qu'en penses tu ?

    Après si tu veux vraiment faire un algo comme celui-ci, tu peux t'inspirer de ce code source : http://developer.yahoo.com/yui/docs/yuiloader.js.html
    Perso je n'en ai jamais fait, mais dans ce source il y à un système de chargement avec ordonnancement par require.
    Ce qui correspond exactement à ce que tu cherches.

    a plus

Discussions similaires

  1. Création d'un dump avec PowerShell
    Par babagreen dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/05/2015, 10h54
  2. Création d'un bruit "logique" ou "ordonné" (trouve plus le nom)
    Par supergrey dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 23/01/2010, 07h26
  3. Access 2007 Création Ordonnance/Posologies/Horaires_Prises
    Par Dr_No dans le forum Modélisation
    Réponses: 2
    Dernier message: 26/02/2009, 10h30
  4. Pas de création d'user dans le dump
    Par pat29 dans le forum Import/Export
    Réponses: 1
    Dernier message: 05/09/2008, 16h26
  5. création de dump sous access
    Par clemasson dans le forum Access
    Réponses: 2
    Dernier message: 10/09/2006, 02h47

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