zoukankan      html  css  js  c++  java
  • 批量修改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 ";
    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、 在浏览器输入访问您的网址.数据库表的前缀就可以修改成功了。

  • 相关阅读:
    uva 10491 Cows and Cars
    uva 10910 Marks Distribution
    uva 11029 Leading and Trailing
    手算整数的平方根
    uva 10375 Choose and divide
    uva 10056 What is the Probability?
    uva 11027 Palindromic Permutation
    uva 10023 Square root
    Ural(Timus) 1081. Binary Lexicographic Sequence
    扩展欧几里得(求解线性方程)
  • 原文地址:https://www.cnblogs.com/tangchuanyang/p/3516997.html
Copyright © 2011-2022 走看看