批量修改mysql的表前缀
如何批量修改mysql的表前缀名称
教程中将涉及两种方法修改,一种是批量修改(使用php脚步完成)一种是精确修改(使用sql查询语句完成)。
方法一:使用sql语句修改mysql数据库表前缀名
首先我们想到的就是用sql查询语句来修改,这个方法也很方便,在运行
SQL 查询框中输入如下语名就可以了。
ALTER TABLE 原表名 RENAME TO 新表名;
如:
ALTER
TABLE old_post RENAME TO
new_post;
Sql查询语句有一个缺点,那就是一句SQL语句只能修改一张数据库的表名,如果你要精确修改某一张表,很好用。如果数据库表很多的话,比较麻烦。
但是我们可以通过一条语句一次性生成所有的sql语句:select
concat(‘alter table ‘,table_name,‘ rename to ‘,table_name) from
information_schema.tables where table_name like‘dmsck_%‘;
生成语句如下:
alter
table dmsck_acategory rename to dmsck_acategory;
alter table
dmsck_address rename to dmsck_address;
alter table dmsck_article rename
to dmsck_article;
alter table dmsck_attrcategory rename to
dmsck_attrcategory;
alter table dmsck_attribute rename to
dmsck_attribute;
alter table dmsck_brand rename to
dmsck_brand;
alter table dmsck_cart rename to
dmsck_cart;
alter table dmsck_category_attr rename to
dmsck_category_attr;
alter table dmsck_category_goods rename to
dmsck_category_goods;
alter table dmsck_category_store rename to
dmsck_category_store;
alter table dmsck_collect rename to
dmsck_collect;
alter table dmsck_comment rename to
dmsck_comment;
alter table dmsck_coupon rename to
dmsck_coupon;
alter table dmsck_coupon_sn rename to
dmsck_coupon_sn;
alter table dmsck_enterprise rename to
dmsck_enterprise;
alter table dmsck_filmstrip rename to
dmsck_filmstrip;
alter table dmsck_friend rename to
dmsck_friend;
alter table dmsck_function rename to
dmsck_function;
alter table dmsck_gattribute_rule rename to
dmsck_gattribute_rule;
alter table dmsck_gcategory rename to
dmsck_gcategory;
alter table dmsck_goods rename to
dmsck_goods;
alter table dmsck_goods_attr rename to
dmsck_goods_attr;
alter table dmsck_goods_bak rename to
dmsck_goods_bak;
alter table dmsck_goods_down_log rename to
dmsck_goods_down_log;
alter table dmsck_goods_image rename to
dmsck_goods_image;
alter table dmsck_goods_old rename to
dmsck_goods_old;
alter table dmsck_goods_qa rename to
dmsck_goods_qa;
alter table dmsck_goods_spec rename to
dmsck_goods_spec;
alter table dmsck_goods_statistics rename to
dmsck_goods_statistics;
alter table dmsck_groupbuy rename to
dmsck_groupbuy;
alter table dmsck_groupbuy_log rename to
dmsck_groupbuy_log;
alter table dmsck_keyword rename to
dmsck_keyword;
alter table dmsck_mail_queue rename to
dmsck_mail_queue;
alter table dmsck_member rename to
dmsck_member;
alter table dmsck_message rename to
dmsck_message;
alter table dmsck_module rename to
dmsck_module;
然后将其复制到一个文本文件中,将要修改的前缀统一修改(稍稍麻烦),然后再复制到mysql中执行sql语句就ok了。
方法二:php脚本批量修改mysql数据库表前缀
1、将下面的代码复制到记事本,根据自己人情况修改好数据库信息。再上传您网站的根目录。您可以直接下载mysql数据库前缀名批量修改脚步:修改mysql数据库表前缀名。
1
<?php
2 //设置好相关信息
3
$dbserver=‘localhost‘;//连接的服务器一般为localhost
4
$dbname=‘y8n9nghmze_shop‘;//数据库名
5
$dbuser=‘root‘;//数据库用户名
6
$dbpassword=‘‘;//数据库密码
7
$old_prefix=‘ecs_‘;//数据库的前缀
8
$new_prefix=‘dmsck_‘;//数据库的前缀修改为
9 if
(
10 !is_string($dbname) || !is_string($old_prefix)||
!is_string($new_prefix) )
11 {
12
return false;
13 }
14 if
(!mysql_connect($dbserver,
15 $dbuser, $dbpassword))
{
16 print ‘Could not connect to mysql‘;
17
exit;
18 }
19
20 //取得数据库内所有的表名
21
22 $result =
23
mysql_list_tables($dbname);
24
25 if
(!$result) {
26
27 print "DB Error,
could not
28 list tables\n";
29
30 print ‘MySQL Error: ‘ .
31
mysql_error();
32
33
exit;
34
35
}
36
37
//把表名存进$data
38
39 while ($row
=
40 mysql_fetch_row($result)) {
41
42 $data[] = $row[0];
43
44 }
45
//过滤要修改前缀的表名
46 foreach($data as $k =>
$v)
47 {
48 $preg =
preg_match("/^($old_prefix{1})([a-zA-Z0-9_-]+)/i",
49 $v,
$v1);
50 if($preg)
51
{
52 $tab_name[$k] =
53
$v1[2];
54 //$tab_name[$k]
55 =
str_replace($old_prefix, ‘‘, $v);
56 }
57
}
58 if($preg)
59
{
60 //
echo ‘<pre>‘;
61
//
print_r($tab_name);
62
// exit();
63
//批量重命名
64 foreach($tab_name as $k
=>
65 $v)
66 {
67
$sql = ‘RENAME TABLE
68 `‘.$old_prefix.$v.‘` TO
`‘.$new_prefix.$v.‘`‘;
69
mysql_query($sql);
70 }
71
print
数据表前缀:.$old_prefix."<br>".已经修改为:.$new_prefix."<br>";
72
}
73 else
74 { print
您的数据库表的前缀.$old_prefix.输入错误。请检查相关的数据库表的前缀;
75 if (
mysql_free_result($result) ) {
76 return
true;
77 }
78 }
79
?>
2、 在浏览器输入访问您的网址.数据库表的前缀就可以修改成功了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。