2010-04-28 4 views
8

J'écris un script PHP pour générer des dumps SQL à partir de ma base de données à des fins de contrôle de version. Il vide déjà la structure de données en exécutant la requête SHOW CREATE .... appropriée. Maintenant, je veux vider les données mais je ne suis pas sûr de la meilleure méthode. Mes exigences sont les suivantes:Générer un vidage de données MySQL dans SQL à partir de PHP

  • je besoin d'un enregistrement par ligne
  • Les lignes doivent être triées par clé primaire
  • SQL doit être valide et exacte, peu importe le type de données (entiers, chaînes, données binaires ...)
  • décharges doivent être identiques lorsque les données n'a pas changé

Je peux détecter et exécuter mysqldump comme commande externe, mais qui ajoute une exigence de système supplémentaire et je dois analyser la sortie afin d'éliminer les en-têtes et les pieds de page avec des informations de vidage dont je n'ai pas besoin (comme la version du serveur ou la date de vidage). J'aimerais garder mon script aussi simple que possible afin qu'il puisse être conservé dans un fichier autonome.

Quelles sont mes alternatives?

+0

Pendant ce temps, je suis d'essayer SHOW INDEX et mysql_real_escape_string() –

+0

mysqldump n'ajoute pas vraiment une exigence du système supplémentaire, il est livré avec mySQL. –

+0

Donc, mysqldump ajoute MySQL en tant qu'exigence système. La plupart des développeurs n'ont pas de serveur local: ils se connectent au serveur commun du LAN. –

Répondre

1

Je pense que l'analyse de la sortie mysqldump est toujours la plus facile. Je pense qu'il y a vraiment peu de méta-données que vous devez exclure, et donc laisser tomber celles-ci ne devraient être que quelques lignes de code.

Vous pouvez aussi regarder les options de mysqdump suivantes: --tab, --compact

0

Pourrait toujours essayer la fonction system(). J'espère que vous êtes dans Linux :)

+1

Il y a des systèmes en dehors de Linux aussi :) –

0

« Select * de l'ordre tablename par clé primaire » vous pouvez obtenir les noms des tables de la base de données information_schema ou le « spectacle commande "tables". peut également obtenir la clé primaire de « montrent des indices de tablename » puis boucle et créer insérer des chaînes déclarations

Questions connexes