php腳本批量修改mysql數(shù)據(jù)庫(kù)表前綴
- 分類:博文-IT資訊
- 發(fā)布于 2016年5月06日 星期五 18:31
- 作者:Super User
- 點(diǎn)擊數(shù):5187
經(jīng)測(cè)試,成功修改。如果你需要,請(qǐng)參考借鑒如下:
?
1、將下面的代碼復(fù)制到記事本,根據(jù)自己個(gè)人情況修改好數(shù)據(jù)庫(kù)信息,并保存到editprefix.php。
?
?代碼如下 復(fù)制代碼
<?php
//設(shè)置好相關(guān)信息
$dbserver='localhost';//數(shù)據(jù)庫(kù)服務(wù)器,本地一般為localhost
$dbname='newdata';//數(shù)據(jù)庫(kù)名
$dbuser='root';//數(shù)據(jù)庫(kù)用戶名
$dbpassword='666666';//數(shù)據(jù)庫(kù)密碼
$old_prefix='old_';//數(shù)據(jù)庫(kù)的原前綴
$new_prefix='new_';//數(shù)據(jù)庫(kù)的新前綴
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;
??????????? }
??????????????? //取得數(shù)據(jù)庫(kù)內(nèi)所有的表名
??????????? $result = mysql_list_tables($dbname);
??
??????????? if (!$result) {
??????????????? print "DB Error, could not list tablesn";
??????????????? print 'MySQL Error: ' . mysql_error();
??????????????? exit;
??????????? }
??????????????? //把表名存進(jìn)$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? 數(shù)據(jù)表前綴:.$old_prefix."
".已經(jīng)修改為:.$new_prefix."
";
??
}
?else
?{ print 您的數(shù)據(jù)庫(kù)表的前綴.$old_prefix.輸入錯(cuò)誤。請(qǐng)檢查相關(guān)的數(shù)據(jù)庫(kù)表的前綴;
??
??????????? if ( mysql_free_result($result) ) {
????????????? return true;
??????????? }
}
?
?
批量刪除表也很簡(jiǎn)單
?代碼如下 復(fù)制代碼
Select CONCAT( 'drop table ', table_name, ';' )
FROM information_schema.tables
Where table_name LIKE 'new_%';
?
注意: like ‘new_%’ 其中 new_是你需要替換的表前綴.
執(zhí)行查詢,會(huì)自動(dòng)生成出 drop table table_name這樣的SQL語句.
然后復(fù)制 drop語句 可以執(zhí)行刪除的操作了.