Mysql
 sql >> Database >  >> RDS >> Mysql

C'è un modo per TRUNCATE la maggior parte delle tabelle in uno schema MySQL?

Credo che dovrai scrivere una sceneggiatura nella lingua che preferisci. Puoi ottenere un elenco delle tabelle nello schema dal db information_schema, quindi scorrere su di esse, troncando quelle che desideri.

La query sarebbe qualcosa del tipo:

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

Modifica :Ecco un esempio 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) }