Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:despeje um banco de dados de uma consulta SQL


Dados os seus requisitos, acho que você ficou com (pseudo-código + 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

Basicamente, busque a lista de todas as tabelas, então percorra cada tabela e gere INSERT instruções para cada linha manualmente (a maioria das APIs tem uma maneira simples de buscar a lista de nomes de colunas, caso contrário você pode voltar a chamar DESC TABLE ).

SHOW CREATE TABLE é feito para você, mas tenho certeza de que não há nada análogo a fazer SHOW INSERT ROWS .

E, claro, em vez de imprimir o dump, você pode fazer o que quiser com ele.