Můžete zkontrolovat zdrojový kód phpMyAdmin (výhoda open-source softwaru). Zkontrolujte skript export.php a podpůrné funkce v souboru skriptu libraries/export/sql.php.
Stručně řečeno, phpMyAdmin dělá:
- získejte seznam tabulek v dané databázi (ZOBRAZIT TABULKY Z...),
- získejte dotaz pro vytvoření pro každou tabulku (SHOW CREATE TABLE...),
- analyzujte jej a extrahujte z něj definice sloupců,
- získejte všechna data (SELECT * FROM...)
- sestavte dotaz podle dat sloupce.
Napsal jsem podobný kód pro své vlastní aplikace (pro účely zálohování, když mi GPL licence phpMyAdmin nedovoluje jej použít), nicméně k získání definic sloupců používám DESCRIBE. Myslím, že spíše analyzují výstup SHOW CREATE TABLE, protože obsahuje více informací než výstup DESCRIBE.
Tento způsob generování SQL vět vyžaduje trochu opatrnosti při manipulaci s escapováním, ale umožňuje určitou flexibilitu, protože můžete převádět typy, filtrovat nebo dezinfikovat data atd. Je také mnohem pomalejší než použití nástroje jako mysqldump a měli byste dbejte na to, abyste nezabírali veškerou dostupnou paměť (pište brzy, pište často, neuchovávejte vše v paměti).
Pokud budete implementovat proces migrace (ze serveru na server), možná by bylo snazší to udělat pomocí nějakého shell skriptování a přímého volání mysqldump, pokud nebudete dělat vše s PHP.