Vous pouvez vérifier le code source de phpMyAdmin (un avantage des logiciels open-source). Vérifiez le script export.php et les fonctions de support dans le fichier de script library/export/sql.php.
En résumé, ce que fait phpMyAdmin est :
- obtenir une liste des tables dans la base de données donnée (SHOW TABLES FROM...),
- obtenir la requête de création pour chaque table (SHOW CREATE TABLE...),
- l'analyser et en extraire les définitions de colonne,
- obtenir toutes les données (SELECT * FROM...)
- construire une requête en fonction des données de la colonne.
J'ai écrit un code similaire pour mes propres applications (à des fins de sauvegarde, lorsque la licence GPL de phpMyAdmin ne me permet pas de l'utiliser), mais j'utilise DESCRIBE pour obtenir des définitions de colonne. Je pense qu'ils analysent plutôt la sortie SHOW CREATE TABLE car elle contient plus d'informations que la sortie DESCRIBE.
Cette façon de générer des phrases SQL nécessite un peu de soin pour gérer l'échappement, mais elle permet une certaine flexibilité, car vous pouvez convertir des types, filtrer ou nettoyer des données, etc. C'est aussi beaucoup plus lent que d'utiliser un outil comme mysqldump et vous devriez veillez à ne pas consommer toute la mémoire disponible (écrivez vite, écrivez souvent, ne gardez pas tout en mémoire).
Si vous implémentez un processus de migration (de serveur à serveur), il serait peut-être plus facile de le faire avec des scripts shell et en appelant directement mysqldump, à moins que vous ne fassiez tout avec PHP.