Массовое переименование таблиц базы данных MySQL

Полезный скрипт на php:

<?php  
$db_server = "localhost";    // hostname MySQL server  
$db_username = "username";   // username MySQL server  
$db_password = "password";   // password MySQL server  
$db_name = "database";       // database name  
  
$pattern = "pattern_";          // search string  
$new_pattern = "new_pattern_";  // replacement string,   
                                // can be empty  
 
// login to MySQL server  
$link = mysql_connect( $db_server, $db_username, $db_password);  
  
if (!$link)  
{  
  die('Could not connect: ' . mysql_error());  
}  
  
// list all tables in the database containing the search pattern  
$sql = "SHOW TABLES FROM `" . $db_name . "`";  
$sql .= " LIKE '%" . $pattern . "%'";  
  
$result = mysql_query ( $sql, $link );  
if (!$result)  
{  
  die("Invalid query: " . mysql_error( $link ));  
}  
  
$renamed = 0;  
$failed = 0;  
  
while ( $row = mysql_fetch_array ($result) )  
{  
  // rename every table by replacing the search pattern   
  // with a new pattern  
  $table_name = $row[0];  
  $new_table_name = str_replace ( $pattern, $new_pattern, $table_name);  
  
  $sql = "RENAME TABLE `" . $db_name . "`.`" . $table_name . "`";  
  $sql .= " TO `" . $db_name . "`.`" . $new_table_name . "`";  
  
  $result_rename = mysql_query ( $sql, $link );  
  if ($result_rename)  
  {  
    echo "Table `" . $table_name . "` renamed to :`";  
    echo $new_table_name . "`.\n";  
    $renamed++;  
  }  
  else  
  {  
    // notify when the renaming failed and show reason why  
    echo "Renaming of table `" . $table_name . "` has failed: ";  
    echo mysql_error( $link ) . "\n";  
    $failed++;  
  }  
}  
  
echo $renamed . " tables were renamed, " . $failed . " failed.\n";  
  
// close connection to MySQL server  
mysql_close( $link );  
?>


Нашел здесь.
  • +2
  • 12 ноября 2009, 17:52
  • Sergei_T

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.