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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值