2009-06-01 14 views

Répondre

1

Je crois que vous devrez écrire un script dans la langue que vous préférez. Vous pouvez obtenir une liste des tables du schéma à partir de la base de données information_schema, puis les parcourir, en tronquant toutes celles qui vous intéressent.

la requête serait quelque chose comme:

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

Modifier: Voici un exemple en 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) } 
+0

intéressant. Mais comment je les répète exactement? – Monster

0

Une autre méthode pourrait être que vous copiez ces quatre tables dans un nouveau schéma, puis supprime le schéma de base de données d'origine.

0

* nix one-liner:

for i in `mysql -e "show tables MY_DB" | grep -vE "(table1|table2)"`; do mysql -e"TRUNCATE ${i}" MY_DB; done 
Questions connexes