共计 628 个字符,预计需要花费 2 分钟才能阅读完成。
今天接到需求说需要把 MySQL 5.7 数据库的名字从 A 改为 B, 查了下 A 数据库下有不到 200 张表,也不是很大,要是用导入导出也可以,就是还是会慢,时间宝贵啊,用的时间越少越好。
有个 rename table 命令,写个脚本主要用它来实现需求
- #!/bin/bash
- # 先判断新数据库是否存在,要是不存在就创建。
- # 列出老数据库下都有那些表 , 其中 N 和 s 参数起到的作用是格式化,有点类似于 Oracle 下 sqlplus 里的 pagesize
- # 用 for 循环来 rename。
- mysql -uroot -pxxxxDB2017# -e ‘create database if not exists cus_0042’
- list_table=$(mysql -uroot -pxxxxDB2017# -Nse “select table_name from information_schema.TABLES where TABLE_SCHEMA=‘old_databases’“)
- for table in $list_table
- do
- mysql -uroot -pxxxxDB2017# -e “rename table old_databases.$table to cus_0042.$table“
- done
执行成功后,old_databases 下就空了,可是删除了。
假如是 myisam 的存储引擎,直接在数据目录下 mv 就行。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148725.htm
正文完
星哥玩云-微信公众号