zoukankan      html  css  js  c++  java
  • mysql如何更改数据库名(一键实现mysql改数据库名)

    由于某种原因,有时我们有可能需要数据库的名称,但是不像官方有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=3310

    if [ $# -ne 2 ]; 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=""'"$1"'" ` newDB_exist=`$MYSQL_BIN/mysql $user_identify -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$2"'" ` if [ -z "$oldDB_exist" -o -n "$newDB_exist" ]; then echo "Database $1 does not exist or Database $2 exist ,please confirm! " exit 1 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=""'"$1"'") for view in $list_views do $MYSQL_BIN/mysqldump $user_identify --no-create-db --no-data $1 $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 $1 >> 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=""'"$1"'") 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 $2 < all_views_DB_$1_$DUMPTIME.sql

    #remove old database
    $MYSQL_BIN/mysql $user_identify -e "drop database $1"
  • 相关阅读:
    JDBC获取数据库表字段信息
    No bean named 'springSecurityFilterChain' is defined
    VS 2010中对WPF4有哪些多点触摸支持?
    文件管理File类
    VS 2010 Beta2中WPF有哪些改进?
    WPF的实质
    C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
    VS 2010 Beta2中WPF与Silverlight的关键区别?
    C# 图片与byte[]之间以及byte[]与string之间的转换
    日期格式化{0:yyyyMMdd HH:mm:ss.fff}和{0:yyyyMMdd hh:mm:ss.fff}的区别
  • 原文地址:https://www.cnblogs.com/zejin2008/p/5464602.html
Copyright © 2011-2022 走看看