执行步骤

  1.用concat批量生成修改表名的语句

SELECT CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ',
substring(table_name,1,locate('_postfix',table_name)),'_new_postfix',';' )
FROM information_schema.tables Where table_name LIKE '%_postfix';

  2.将生成的语句执行一遍即可完成修改

——————————————————————————————————————

MySQL函数解释:

  1.substring(str,index,num)        从指定字符串(str) 截取指定的子串(从index开始截取num个字符)。

  示例:

select substring('class_name',2,5) ;

  执行结果为 ‘lass_’

  2.locate(cstr,str[,position])    查找子字符串(cstr)在字符串(str)中的坐标,可选参数position意为查找的起始位置

  示例:

SELECT locate('s','students_name')
SELECT locate('s','students_name',5)

  第1条语句执行结果为:1

  第2条语句执行结果为:8

 python脚本批量修改表名

工作中的测试环境每天要做初始化工作,需将部分表的名称由昨天改成当天,故将修改表名的工作写成了脚本。

因表头已知且一般不会改变,故直接定义了表头列表inittable_prefix,而没有使用上述SQL方法(substring)

import MySQLdb
import datetime
import traceback today = datetime.date.today().strftime('%Y%m%d')
yesterday = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y%m%d') inittable_prefix = ['exam_table1_','exam_table2_','exam_table3_',
'exam_table4_','exam_table5_','exam_table6_'] today_list = [i+today for i in inittable_prefix]
lastday_list = [i+yesterday for i in inittable_prefix]
sqllit = ['ALTER TABLE %s RENAME TO %s' % (lastday_list[i],today_list[i]) for i in range(len(inittable_prefix))] class mymysql(object):
def __init__(self):
self.conn = MySQLdb.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
passwd = 'root',
db = 'xt') def renameTable(self,sql_list):
for sql in sql_list:
cur = self.conn.cursor()
try:
cur.execute(sql)
self.conn.commit()
except:
self.conn.rollback()
traceback.print_exc()
finally:
cur.close()
def closeConn(self):
self.conn.close() if __name__ =='__main__':
co = mymysql()
co.renameTable(sqllit)
co.closeConn()

MySQL批量修改相同后缀表名的更多相关文章

  1. mysql 批量修改 表字段/表/数据库 字符集和排序规则

    今天接到一个任务是需要把数据库的字符编码全部修改一下,写了以下修正用的SQL,修正顺序是   表字段 > 表 > 数据库. 表字段修复: #改变字段数据 SELECT TABLE_SCHE ...

  2. MYSQL批量修改表前缀与表名sql语句

    修改表名 ALTER TABLE 原表名 RENAME TO 新表名; 一句SQL语句只能修改一张表 show tables; 1. SELECT CONCAT( 'ALTER TABLE ', ta ...

  3. ref:ubuntu下如何批量修改文件后缀名

    ref:https://blog.csdn.net/whuslei/article/details/6724900 ubuntu下如何批量修改文件后缀名 正确的方法是: 在命令行中输入   renam ...

  4. Win10怎么批量修改文件后缀名?

    Win10怎么批量修改文件后缀名?一般我们都是右击重命名,但是,如果要改的文件很多的话,这样做事不行的,该怎么批量修改后缀名呢?下面我们一起来看看两种解决办法 通常我们修改文件后缀名都是右击>& ...

  5. 如何批量修改文件后缀名,python来帮你

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  6. MySQL根据表前缀批量修改、删除表

    注意:请先调试好,以及做好备份,再执行操作. 批量修改表 批量给前缀为 xushanxiang_content_ 的表增加一个 username 的字段: SELECT CONCAT('ALTER T ...

  7. 批量修改文件名后缀,例如:html修改成HTML

    批量修改文件名后缀,例html修改成HTML 把文件后缀名html全部修改成HTML: 例:aa.html aa.HTML #!/bin/bash for file in `ls`;do mv $fi ...

  8. MySQL在Linux下的表名如何不区分大小写

    MySQL在Linux下的表名如何不区分大小写   今天测试的时候,遇到一些问题,明明看到数据,就是查不出来;后来发现,在linux下, mysql的表名区分大小写,而在windows下是不区分,从w ...

  9. [转]mysql在windows下支持表名大小写,lower_case_table_names

    windows下mysql默认是不支表名大小写的,也就是表名大小写不敏感.用phpmyadmin创建的驼峰式表名,全部被强制成小写.mysql表名大小写敏感的参数: lower_case_table_ ...

随机推荐

  1. java打包小记

    1.一个类的 Hello.java class Hello{ public static void main(String[] agrs){ System.out.println("hell ...

  2. Java/C++ 学习资源推荐

    列举一下我所知道的一些学习资源,希望能对大家有所帮助 Java学习资源资源: 1.尚学堂 Java300集 链接:https://study.163.com/course/introduction.h ...

  3. wmi的作用

    WMI是Windows 2K/XP管理系统的核心,对于其他的Win32操作系统,WMI是一个有用的插件. WMI的作用是: ①通过它可以访问.配置.管理和监视几乎所有的Windows资源,比如用户可以 ...

  4. centos将nginx服务设置为开机自动启动

    centos将nginx服务设置为开机自动启动 1.在/etc/init.d下创建文件nginx 发现原来就有并且配置就是默认的,而且是正确的 命令为: vim /etc/init.d/nginx 需 ...

  5. web页面元素定位

    所有web网页中有8种元素定位方式 靠单一的特征找元素:6种(id,class_name,tag_name,name,link_text(2))组合各种特征和关系来找元素:2种(xpath,css) ...

  6. day41——数值类型、完整性约束

    day41 数值类型 整数类型 有符号的设置 mysql> create table t1(id tinyint); # 默认有符号,即数字前有正负号 无符号的设置 mysql> crea ...

  7. 4. Spark SQL数据源

    4.1 通用加载/保存方法 4.1.1手动指定选项 Spark SQL的DataFrame接口支持多种数据源的操作.一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表.把DataF ...

  8. 第13章 Salesforce Lightning应用程序

    13.1 Lightning应用程序 13.1.1 什么是闪电应用程序 Salesforce应用程序有两种风格:经典应用程序和闪电应用程序.经典应用程序在Salesforce Classic中创建和管 ...

  9. .Net 取树形结构的数据

    最近遇到了无限层级数据要读取的问题,所有就写了个. 根据当前所有父级,查询出子级内容 private void GetTypeOfWorkforTree(out List<TypeOfWorkD ...

  10. Linux多IP配置

    # ifconfig eth0:1 172.168.1.222