zoukankan      html  css  js  c++  java
  • MYSQL批量修改表前缀与表名sql语句

    修改表名

    ALTER TABLE 原表名 RENAME TO 新表名;

    一句SQL语句只能修改一张表

    show tables;

    1.

    SELECT
        CONCAT(
            'ALTER TABLE ',
            table_name,
            ' RENAME TO db_',
            substring(table_name, 4),
            ';'
        )
    FROM
        information_schema. TABLES
    WHERE
        table_name LIKE 'ct%';

    批量复制一下到Notepad++中,只保留sql语句,再复制到mysql中执行

    2.php脚本批量修改mysql数据库表前缀

    <?php
    //设置好相关信息
    $dbserver='localhost';//连接的服务器一般为localhost
    $dbname='corethink';//数据库名
    $dbuser='root';//数据库用户名
    $dbpassword='root';//数据库密码
    $old_prefix='ct_';//数据库的前缀
    $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];
        }
    }
    if($preg){                
         foreach($tab_name as $k => $v){
            $sql = 'RENAME TABLE `'.$old_prefix.$v.'` TO `'.$new_prefix.$v.'`';
            mysql_query($sql);
        }
        print  数据表前缀:.$old_prefix."<br>".已经修改为:.$new_prefix."<br>";   
    }else{ print 您的数据库表的前缀.$old_prefix.输入错误。请检查相关的数据库表的前缀;  
        if ( mysql_free_result($result) ){
            return true;
        }
    }
    ?>

    由于mysql_list_tables方法已经过时,运行以上程序时会给出方法过时的提示信息

    Deprecated: Function mysql_list_tables() is deprecated in … on line xxx 

    在php.ini中设置error_reporting,不显示方法过时提示信息 

    error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED 
     3.批量删除表
    SELECT
        CONCAT(
            'drop table ',
            table_name,
            ';'
        )
    FROM
        information_schema. TABLES
    WHERE
        table_name LIKE 'uc_%';

    执行查询,会自动生成出 drop table table_name这样的SQL语句

     

  • 相关阅读:
    ASP.NET之电子商务系统开发1(数据列表)
    ASP.NET之电子商务系统开发2(购物车功能)
    MFC之列表控件
    自己动手写操作系统(二)一个最小的“操作系统”
    自己动手写操作系统(一)环境准备
    windows常用快捷键
    MFC之下拉框
    链表反转&交换链表结点
    TinyHttp前置知识
    单链表基本操作总结
  • 原文地址:https://www.cnblogs.com/baby123/p/5958579.html
Copyright © 2011-2022 走看看