由于某种原因,有时我们有可能需要数据库的名称,但是不像官方有rename可以去更改表名,并没有一个命令可以去更新数据库的名字。

思路:借助rename这个命令

基本操作:rename olddb.tables to newdb.tables

但是这个命令碰到视图会出错,也不能把旧库中的函数,存储过程,事件移过来,对于这一些,我们可以从旧库中导出这些定义,再导入到新库中。我们不可能一个个去改,得借助脚本。

脚本实现的逻辑思路:

1.查看要改的新旧库是否存在,来判断是否需要进一步处理

2.先用rename把所有的表移到新命名的库中

3.导出旧库中的视图,函数,存储过程,事件。

4.导入新库中

5.删除旧库

这个方法把全部数据导出再导入来得更快。

完整的脚本如下(操作前请作好备份):

[chenzejin@localhost sh_script]$ cat mysql_rename_database.sh
#!/bin/bash #script_name: mysql_rename_database.sh
MYSQL_USER='root'
MYSQL_PASSWD='123'
MYSQL_BIN='/usr/local/mysql/bin'
HOSTS=127.0.0.1
PORT=
if [ $# -ne ];
then
echo "usage:./mysql_rename_database.sh oldDB newDB"
exit
fi
user_identify=" -h$HOSTS -P$PORT -u$MYSQL_USER -p$MYSQL_PASSWD " oldDB_exist=`$MYSQL_BIN/mysql $user_identify -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$"'" `
newDB_exist=`$MYSQL_BIN/mysql $user_identify -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$"'" ` if [ -z "$oldDB_exist" -o -n "$newDB_exist" ];
then
echo "Database $1 does not exist or Database $2 exist ,please confirm! "
exit
fi #dump all views
DUMPTIME=`date +%Y%m%d_%H%M%S`
list_views=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='view' and TABLE_SCHEMA=""'"$"'") for view in $list_views
do
$MYSQL_BIN/mysqldump $user_identify --no-create-db --no-data $ $view >> all_views_DB_$1_$DUMPTIME.sql
done #dump function ,triger ,events
$MYSQL_BIN/mysqldump -F -R -E $user_identify --no-create-db --no-create-info --no-data $ >> all_views_DB_$1_$DUMPTIME.sql #create new databases;
$MYSQL_BIN/mysql $user_identify -e "create database $2"
list_table=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='base table' and TABLE_SCHEMA=""'"$"'") for table in $list_table
do
$MYSQL_BIN/mysql $user_identify -e "rename table $1.$table to $2.$table"
done #import views,function ,triger ,events
$MYSQL_BIN/mysql $user_identify $ < all_views_DB_$1_$DUMPTIME.sql #remove old database
$MYSQL_BIN/mysql $user_identify -e "drop database $1"

mysql如何更改数据库名(一键实现mysql改数据库名)的更多相关文章

  1. eclipse 改包名

    转载自: http://www.2cto.com/kf/201304/206747.html 1.在项目上右键,选择android tools->rename application packa ...

  2. [功能集锦] 003 - 一键生成mysql数据字典/数据库速查表

    写在前面: 因为工作时候经常遇到半路接手项目的情况,由于年代久远,数据库字典这块经常缺失.故写此篇,以便复用,也希望对大家有点帮助. 随笔内容不高级,如有不妥,不吝指正. ps:有另一篇详细随笔可以参 ...

  3. Rehat一键安装mysql脚本和备份数据库脚本

    Rehat一键安装mysql脚本 ##说明:适用,Rehat 5 6 7 1.运行状态,运行成功输出mysql临时密码 2.代码如下 #!/bin/bash #获取系统信息 sudo cat /etc ...

  4. 数据库SQL语法到MySQL实操

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 ...

  5. 【转】如何将MySQL数据目录更改为CentOS 7上的新位置

    本文转载自:http://www.leftso.com/blog/362.html 介绍 数据库随着时间的推移而增长,有时超过了文件系统的空间.当它们与操作系统的其他部分位于同一分区上时,也可能遇到I ...

  6. mysql改数据库名称

    第一种方法: 1.创建需要改成新名的数据库.2.mysqldum 导出要改名的数据库3.删除原来的旧库(确定是否真的需要)当然这种方法虽然安全,但是如果数据量大,会比较耗时,哎,当时连这种方法都没有想 ...

  7. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  8. 【数据库】1.0 MySQL入门学习(一)——常识性知识

    1.0 什么是MySQL(官方发音 My Ess Que Ell)? 是一个快速.多线程.多用户和强壮的SQL数据库服务器,SQL是世界上最流行的标准化数据库语言. 名字来源:共同创办人Monty W ...

  9. 数据库操作----找了MySQL和SQL Sever两个的基础语句

    这是MySQL的基本操作: 1 登入数据库:mysql -uroot -p+密码 (SQL Sever登入: osql -U 用户名 -P 密码) 显示已存在的数据库:show databases; ...

随机推荐

  1. 【Vegas原创】vlookup的使用方法

    情景: 1,当月移动话单,没有姓名,只有手机号码:(用户费用sheet) 2,IT部自己整理的手机号历史记录,有姓名,有手机号码:(历史信息sheet) 3,要求:需要从历史记录中,透视出当月所有手机 ...

  2. HighCharts官网更新了!(忠实粉的小声音)

    之前用HighCharts做统计分析,用到的大部分都是柱状图和饼图,可是在HighCharts主页却摆着一个曲线图的实例,虽然从曲线图上的标记可以找到对应的API项,但是总是可能有对应不上柱状图的时候 ...

  3. PHP 常用获取路径代码

    <? //获取当前的域名: echo $_SERVER['SERVER_NAME']; //获取来源网址,即点击来到本页的上页网址 echo $_SERVER["HTTP_REFERE ...

  4. [leetcode]Binary Tree Right Side View

    好久不写了,最近忙毕业论文呢. 这个题,就是说一个二叉树,你从右边看,你能看到的数有哪些(会被遮挡) 其实抽象出来就是说...二叉树每层最右边的数有哪些.. 那我们按层遍历一次就好了. /** * D ...

  5. saiku 升级&备份&恢复

    最近使用saiku,重新编译升级之后维护困难,下面讲解一下简单的办法: 1.备份saiku-server下面的data文件夹 2.备份saiku-server下面的repository文件夹 3.升级 ...

  6. 轻量级容器Docker+微服务+RESTful API

    [宗师]李锟(44035001) 10:23:03感觉Docker这样的轻量级容器+微服务+RESTful API三者可以形成一个铁三角.这也代表了PaaS未来的发展方向. [宗师]李锟(440350 ...

  7. WinStore开发知识导航集锦

    1.页面导航与页面传值:http://blog.csdn.net/tcjiaan/article/details/7895487

  8. Selenium WebDriver屏幕截图(C#版)

    Selenium WebDriver屏幕截图(C#版)http://www.automationqa.com/forum.php?mod=viewthread&tid=3595&fro ...

  9. SZ,RZ传送文件

    linux 和window之间通过xshell的命令 SZ,RZ传送文件:

  10. WCF中因序列化问题引起的异常和错误。

    尝试对参数 http://tempuri.org/ 进行序列化时出错: parameters.InnerException 消息是“不应为数据协定名称为“DBNull:http://schemas.d ...