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

Existe uma maneira de TRUNCATE a maioria das tabelas em um esquema MySQL?


Eu acredito que você terá que escrever um script em qualquer idioma que você mais goste. Você pode obter uma lista das tabelas no esquema do banco de dados information_schema e, em seguida, iterar sobre elas, truncando qualquer uma que desejar.

A consulta seria algo como:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'test' AND table_name NOT IN ('table1', 'table2');

Editar :Aqui está um exemplo usando Perl:
use strict;
use warnings;
use DBI;

my $dbh = DBI->connect("some_dsn");

my $sth = $dbh->prepare(q{SELECT table_name FROM information_schema.tables WHERE table_schema = 'test' AND table_name NOT IN ('table1', 'table2')});
$sth->execute();
$sth->bind_columns(\my $table_name);

while($sth->fetch) { $dbh->do(q{TRUNCATE TABLE } . $table_name) }