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)
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批量修改相同后缀表名的更多相关文章
- mysql 批量修改 表字段/表/数据库 字符集和排序规则
今天接到一个任务是需要把数据库的字符编码全部修改一下,写了以下修正用的SQL,修正顺序是 表字段 > 表 > 数据库. 表字段修复: #改变字段数据 SELECT TABLE_SCHE ...
- MYSQL批量修改表前缀与表名sql语句
修改表名 ALTER TABLE 原表名 RENAME TO 新表名; 一句SQL语句只能修改一张表 show tables; 1. SELECT CONCAT( 'ALTER TABLE ', ta ...
- ref:ubuntu下如何批量修改文件后缀名
ref:https://blog.csdn.net/whuslei/article/details/6724900 ubuntu下如何批量修改文件后缀名 正确的方法是: 在命令行中输入 renam ...
- Win10怎么批量修改文件后缀名?
Win10怎么批量修改文件后缀名?一般我们都是右击重命名,但是,如果要改的文件很多的话,这样做事不行的,该怎么批量修改后缀名呢?下面我们一起来看看两种解决办法 通常我们修改文件后缀名都是右击>& ...
- 如何批量修改文件后缀名,python来帮你
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...
- MySQL根据表前缀批量修改、删除表
注意:请先调试好,以及做好备份,再执行操作. 批量修改表 批量给前缀为 xushanxiang_content_ 的表增加一个 username 的字段: SELECT CONCAT('ALTER T ...
- 批量修改文件名后缀,例如:html修改成HTML
批量修改文件名后缀,例html修改成HTML 把文件后缀名html全部修改成HTML: 例:aa.html aa.HTML #!/bin/bash for file in `ls`;do mv $fi ...
- MySQL在Linux下的表名如何不区分大小写
MySQL在Linux下的表名如何不区分大小写 今天测试的时候,遇到一些问题,明明看到数据,就是查不出来;后来发现,在linux下, mysql的表名区分大小写,而在windows下是不区分,从w ...
- [转]mysql在windows下支持表名大小写,lower_case_table_names
windows下mysql默认是不支表名大小写的,也就是表名大小写不敏感.用phpmyadmin创建的驼峰式表名,全部被强制成小写.mysql表名大小写敏感的参数: lower_case_table_ ...
随机推荐
- [LeetCode] 555. Split Concatenated Strings 分割串联字符串
Given a list of strings, you could concatenate these strings together into a loop, where for each st ...
- orcad 删除不连接符号
1. 双击不连接符号的引脚,如下面的1脚NC 2. 进入引脚的属性界面,取消Is No Connect
- python测试工具nosetests
今天在github上找东西,找到个工具是python写的,但是需要安装nosetests,因此了解了下nosetests python除了unittest,还有nosetests,使用更快捷 nose ...
- [转] Win10插入U盘后双击无法打开,无法访问,显示设备未就绪;驱动哥帮你解决
说起U盘,相信大家都不陌生. 这个不起眼的小东西在我们日常生活息息相关,一旦损坏可能就会造成一些不必要的麻烦. 最近驱动哥就收到了一大批用户关于U盘问题的相关咨询,一起来看看到底是什么情况吧! 据其中 ...
- mysql 的日期和时间函数
执行函数方式 select 函数 函数名称 函 数 功 能 CURDATE() 获取当前日期 CURTIME() 获取当前时间 NOW() 获取当前的日期和时间 UNIX_TIMESTAMP ...
- QT QML 在qml中自定义信号
服从真理,就能征服一切事物. -- 塞涅卡 实例: 自定义文件 MoveYou.qml: import QtQuick 2.5 import QtQuick.Controls 1.4 import Q ...
- 关于goquery的“non-standard import”错误
goquery运行缺包就用get github.com\andybalholm\cascadia下到gopath,然后出现“non-standard import”错误,说明github.com\an ...
- JSP页面验证码实现
首先在JSP页面加上生成图片的链接 <img type="image" src="auth/authCode" id="codeImage&qu ...
- chmod: changing permissions of 'xxx': Operation not permitted
众所周知,在linux系统中,权限最大的是root账号,但凡修改涉及到系统本身的重大权限的操作,都需要root的权限才能操作.但是有些时候也有root干不了的事情. 比如:chmod: changin ...
- bootstrap table 列表增加输入框并保存输入的值不清除
需求: 在bootstrap table上增加输入框,需要选择的时候把输入的值保存到 row 里面,传递给其他模块使用. 实现: columns: [{ ...., { field: 'myField ...