概述
执行步骤
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批量修改相同后缀表名所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复