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

Existe-t-il un moyen de TRUNCATE la plupart des tables dans un schéma MySQL ?

Je crois que vous devrez écrire un script dans la langue que vous aimez le plus. Vous pouvez obtenir une liste des tables du schéma à partir de la base de données information_schema, puis les parcourir en tronquant celles que vous souhaitez.

La requête ressemblerait à :

SELECT table_name FROM information_schema.tables WHERE table_schema = 'test' AND table_name NOT IN ('table1', 'table2');

Modifier :Voici un exemple utilisant 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) }