我是靠谱客的博主 俊秀绿茶,最近开发中收集的这篇文章主要介绍mysql批量改名字_MySQL批量修改相同后缀表名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

执行步骤

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)

importMySQLdbimportdatetimeimporttraceback

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 ininittable_prefix]

lastday_list= [i+yesterday for i ininittable_prefix]

sqllit= ['ALTER TABLE %s RENAME TO %s' % (lastday_list[i],today_list[i]) for i inrange(len(inittable_prefix))]classmymysql(object):def __init__(self):

self.conn=MySQLdb.connect(

host= '127.0.0.1',

port= 3306,

user= 'root',

passwd= 'root',

db= 'xt')defrenameTable(self,sql_list):for sql insql_list:

cur=self.conn.cursor()try:

cur.execute(sql)

self.conn.commit()except:

self.conn.rollback()

traceback.print_exc()finally:

cur.close()defcloseConn(self):

self.conn.close()if __name__ =='__main__':

co=mymysql()

co.renameTable(sqllit)

co.closeConn()

最后

以上就是俊秀绿茶为你收集整理的mysql批量改名字_MySQL批量修改相同后缀表名的全部内容,希望文章能够帮你解决mysql批量改名字_MySQL批量修改相同后缀表名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部