php腳本批量修改mysql數據庫表前綴
- 分類:博文-IT資訊
- 發(fā)布于 2016年5月06日 星期五 18:31
- 作者:Super User
- 點擊數:5447
經測試,成功修改。如果你需要,請參考借鑒如下:
?
1、將下面的代碼復制到記事本,根據自己個人情況修改好數據庫信息,并保存到editprefix.php。
?
?代碼如下 復制代碼
<?php
//設置好相關信息
$dbserver='localhost';//數據庫服務器,本地一般為localhost
$dbname='newdata';//數據庫名
$dbuser='root';//數據庫用戶名
$dbpassword='666666';//數據庫密碼
$old_prefix='old_';//數據庫的原前綴
$new_prefix='new_';//數據庫的新前綴
if ( !is_string($dbname) || !is_string($old_prefix)|| !is_string($new_prefix) )
??? {
??????????????????????? return false;
??????????????? }
??
??????????? if (!mysql_connect($dbserver, $dbuser, $dbpassword)) {
??????????????? print 'Could not connect to mysql';
??????????????? exit;
??????????? }
??????????????? //取得數據庫內所有的表名
??????????? $result = mysql_list_tables($dbname);
??
??????????? if (!$result) {
??????????????? print "DB Error, could not list tablesn";
??????????????? print 'MySQL Error: ' . mysql_error();
??????????????? exit;
??????????? }
??????????????? //把表名存進$data
??????????? while ($row = mysql_fetch_row($result)) {
??????????????? $data[] = $row[0];
??????????? }
??????????????? //過濾要修改前綴的表名
??????????????? foreach($data as $k => $v)
??????????????? {
??????????????????????? $preg = preg_match("/^($old_prefix{1})([a-zA-Z0-9_-]+)/i", $v, $v1);
??????????????????????? if($preg)
??????????????????????? {
??????????????????????????????? $tab_name[$k] = $v1[2];
??????????????????????????????? //$tab_name[$k] = str_replace($old_prefix, '', $v);
??????????????????????? }
??
??????????????? }
if($preg)
{
????????????? //??????? echo '
?
';
??????? //??????? print_r($tab_name);
??????? //??????? exit();
??????????????????????? $sql = 'RENAME TABLE `'.$old_prefix.$v.'` TO `'.$new_prefix.$v.'`';
???????????????? mysql_query($sql);
??
?????????? }
print? 數據表前綴:.$old_prefix."
".已經修改為:.$new_prefix."
";
??
}
?else
?{ print 您的數據庫表的前綴.$old_prefix.輸入錯誤。請檢查相關的數據庫表的前綴;
??
??????????? if ( mysql_free_result($result) ) {
????????????? return true;
??????????? }
}
?
?
批量刪除表也很簡單
?代碼如下 復制代碼
Select CONCAT( 'drop table ', table_name, ';' )
FROM information_schema.tables
Where table_name LIKE 'new_%';
?
注意: like ‘new_%’ 其中 new_是你需要替換的表前綴.
執(zhí)行查詢,會自動生成出 drop table table_name這樣的SQL語句.
然后復制 drop語句 可以執(zhí)行刪除的操作了.