Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :vider une base de données à partir d'une requête SQL

Compte tenu de vos exigences, je pense qu'il vous reste (pseudo-code + SQL)

tables = mysql_fetch "SHOW TABLES"
foreach table in tables
    create = mysql_fetch "SHOW CREATE TABLE table"
    print create
    rows = mysql_fetch "SELECT * FROM table"
    foreach row in rows
        // or could use VALUES (v1, v2, ...), (v1, v2, ...), .... syntax (maybe preferable for smaller tables)
        insert = "INSERT (fiedl1, field2, field2, etc) VALUES (value1, value2, value3, etc)"
        print insert

Fondamentalement, récupérez la liste de toutes les tables, puis parcourez chaque table et générez INSERT instructions pour chaque ligne à la main (la plupart des API ont un moyen simple de récupérer la liste des noms de colonnes, sinon vous pouvez revenir à l'appel de DESC TABLE ).

SHOW CREATE TABLE est fait pour vous, mais je suis presque certain qu'il n'y a rien d'analogue à faire SHOW INSERT ROWS .

Et bien sûr, au lieu d'imprimer le dump, vous pouvez en faire ce que vous voulez.