如何循环和在Perl中重命名MySQL表

时间:2010-04-15 13:33:45

标签: mysql perl loops dbi

你能教我如何循环和;在Perl中重命名MySQL表。感谢。

附上我的代码段

use strict; 
use warnings; 
use DBI; 

my $dbh = DBI->connect( 
    'DBI:mysql:database=dbdev;host=localhost', 
    'dbdev', 
    'dbdevpw', 
    { RaiseError => 1, AutoCommit => 1 }, 
); 

my $sql = RENAME TABLE old_table TO new_table; 
my $sth = $dbh->prepare($sql); 

while (<DATA>){ 
    chomp; 
    // How to implement the Rename all the old tables with the while loop.


    $sth->execute(); 
} 

2 个答案:

答案 0 :(得分:1)

我假设您的表格列表位于 DATA

while (<DATA>){ 
    chomp; 
     $dbh->do("RENAME TABLE ? TO ?", undef, $_, "new_" . $_);
} 

您可能还想查看perldoc DBI

答案 1 :(得分:0)

此代码可用于重命名数据库中的所有表:

my @tables = map @$_, @{ $dbh->selectall_arrayref('SHOW TABLES') };

for my $table (@tables) {
    $dbh->do("RENAME TABLE $table TO new_${table}");
}

希望这有帮助。