質問

MySQLのマニュアル MySQL カバーです。

通常んダンプのデータベースやら逆輸入するくらいのつもりでとすることができます。このオプションのための非常に大きなデータベースです。どうやら RENAME {DATABASE | SCHEMA} db_name TO new_db_name; なに悪いものにだけ存在する一部のバージョンであるのは悪いこと全般.

このニーズに作業 InnoDB, は、店舗ものによって異なるよ MyISAM.

役に立ちましたか?

解決

InnoDBの為、以下のう:新しい空のデータベース、名前の変更各テーブルにしたコミュニティデータベース:

RENAME TABLE old_db.table TO new_db.table;

が必要となりますの権限である。

のためのスクリプティングは、シェル、どちらかをお使いいただけますの

mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ 
    do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done

または

for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;

注記:

  • 隙間がなくなり、オプション -p のパスワードになります。場合データベースは、パスワードを削除し -u username -ppassword ます。
  • 場合は一部のテーブルがトリガでに移動することはできません別のデータベースを上記の方法結果 Trigger in wrong schema エラー)。なお、この場合には、利用、伝統的にクローンはデータベースをドロップ(添付画像の丸で囲んだ部分

    mysqldump old_db | mysql new_db

  • ま保存した手続きで、複写することができますし、その後:

    mysqldump -R old_db | mysql new_db

他のヒント

使用これらのいくつかの簡単なコマンド:

mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

へのI/Oは以下のとおり、@-パブロ-マリン-ガルシア:

mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase

と思い、ソリューションが簡単になりやが示唆された一部の開発者向けです。phpMyAdminは動作します。

からphpMyAdminを選択し、データベースを選択します。のタブが一つという業務は、名前を変更。ることはありません。

では、多くの示唆を新規作成しデータベースの新しい名前をダンプするすべてのテーブルのデータベースに新しいデータベースの旧データベースです。

Enter image description here

利用できるSQLを生成するSQLスクリプト転送、各テーブルをソースデータベースを転送先のデータベースです。

を作成する必要があ接続先のデータベースの前にスクリプトから生成されたコマンドです。

どちらかをお使いいただけますこの二つのスクリプト(Iの発案の元、誰かが"改善"私の回答の利用 GROUP_CONCAT.好きなところをお選びくださも好きですから、オリジナル):

SELECT CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name, '; ')
FROM information_schema.TABLES 
WHERE table_schema='$1';

または

SELECT GROUP_CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name SEPARATOR '; ')
FROM information_schema.TABLES 
WHERE table_schema='$1';

($1$2のソースおよびターゲットにそれぞれ

これをSQLコマンドがいします。

ご注意 GROUP_CONCAT デフォルトの長さを制限する場合がを超えたデータベース数の多い。きを変化させることにより走行 SET SESSION group_concat_max_len = 100000000; (その他の大きます。

を模倣した欠 RENAME DATABASE コマンドはMySQL:

  1. 新規データベースを作成
  2. の名前を変更クエリを処理するクラウドの場合:

    SELECT CONCAT('RENAME TABLE ',table_schema,'.',table_name,
        ' TO ','new_schema.',table_name,';')
    FROM information_schema.TABLES
    WHERE table_schema LIKE 'old_schema';
    
  3. 施設まで格安料金プランを出力

  4. 削除旧データベース

これから 模倣したの名前を変更データベースのコマンドでMySQL.

三つのオプション:

  1. 同時に、新たにデータベースのサーバーを移動して、ファイルからデータベースにフォルダのその他を再起動します。なお、この場合だけすべてのテーブルはMyISAMです。

  2. 同時に、新たにデータベース、テーブルの作成...のような諸表を使用しの挿入...SELECT*fromます。

  3. Mysqldumpを使用ブラウザで表示してみるとファイルです。

に簡単に

変更データベースへのディレクトリ:

cd /var/lib/mysql/

停止MySQL...ことは重要です。

/etc/init.d/mysql stop

大丈夫、このように動作しないためにInnoDBはBDB-データベースです。

名前を変更データベース:

mv old-name new-name

...または、テーブル---

cd database/

mv old-name.frm new-name.frm

mv old-name.MYD new-name.MYD

mv old-name.MYI new-name.MYI

MySQLを再起動

/etc/init.d/mysql start

行...

OK、このようになりませんInnoDBはBDBデータベースです。この場合においてダンプのデータベースを再インポートします。

私は最近になってようやく全件について教えてください、MyISAMとInnoDBが非常に高速:

RENAME TABLE old_db.table TO new_db.table;

記憶してない場いただいていましたが信用がかったのですが、自分以外の誰かいいえ。

にお使いいただけシェルスクリプト:

参考: 方法を変更したい場合はMySQLデータベース?

#!/bin/bash
set -e # terminate execution on command failure

mysqlconn="mysql -u root -proot"
olddb=$1
newdb=$2
$mysqlconn -e "CREATE DATABASE $newdb"
params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES \
                           WHERE table_schema='$olddb'")
for name in $params; do
      $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name";
done;
$mysqlconn -e "DROP DATABASE $olddb"

で働きたい

$ sh rename_database.sh oldname newname

私はこれを使用

$ mysqldump -u root -p olddb >~/olddb.sql
$ mysql -u root -p
mysql> create database newdb;
mysql> use newdb
mysql> source ~/olddb.sql
mysql> drop database olddb;

単純な弾は、ゴール前の混戦うという 完全 名前の変更 を含む落下旧データベースの終点なので名前の変更ではなくコピー):

mysqladmin -uroot -pmypassword create newdbname
mysqldump -uroot -pmypassword --routines olddbname | mysql -uroot -pmypassword newdbname
mysqladmin -uroot -pmypassword drop olddbname

手順:

  1. コピーのラインのメモ帳です。
  2. をお願いするものでありますが"olddbname","newdbname","mypassword"(+任意に"root")と同じことです。
  3. 実行に一つ一つのコマンドライン(入"y"が表示されたら).

MySQLをサポートしていない名前の変更のデータベースを通じてそのコマンドインタフェースの瞬間にも名前に変更することができ、データベースにアクセスできる場合は、ディレクトリにMySQLの店舗そのデータベースです。デフォルトのMySQL設備は通常のデータディレクトリ下のディレクトリにMySQLを設置しました。検索データベースの名前変更したいのデータディレクトリに変更できます。名を変更したいディレクトリがあるアクセス権の問題になってる。注意します。

注意: 必要があるMySQLの以前の名前に変更することができ、データベース

おすすめす新しいデータベースの名前をつけたい)ならびに輸出入に必要なデータから古いのです。インターネットはモバイル.

きの名前を変更データベースPHPMyAdminでのダンプを作成し、その下に再現されるデータベースにすることができます。

方のためのMacユーザーの続編Proは、データベースの名前を変更オプションのデータベースメニューです。http://www.sequelpro.com/

どの方法として2通りの方法があり:

方法1: 周知の方法を変更データベースのスキーマであるダンピングのスキーマを使用mysqldumpを回復でスキーマ、およびその下のスキーマの場合)を行います。

シェル

 mysqldump emp > emp.out
 mysql -e "CREATE DATABASE employees;"
 mysql employees < emp.out 
 mysql -e "DROP DATABASE emp;"

は上記の方法は簡単、時間と空間がかかります。う場合にはスキーマは以 100GB? 方法はあきパイプは、上記のコマンドと省スペースでしか保存されない。

改善状況につなが速い方法の名前を変更システムの主要なテーマは、しかし、注意が必要なのです。

方法2: MySQLは非常に良い機能名を変更したいテーブルも作品を越えて含まれています。この名前変更操作は、原子からアクセスできるテーブルのそれと改称。この程度の短時間で変化するテーブルの名称又はそのスキーマはメタデータが変化します。こちらは手続き的アプローチでこの名前の変更:

同時に、新たにデータベースのスキーマの望ます。名前の変更、テーブルからスキーマへの新たなスキーマは、MySQLのテーブル名の変更"コマンドを実行します。落旧データベースのスキーマ.If there are views, triggers, functions, stored procedures in the schema, those will need to be recreated too.MySQLのテーブル名の変更"に失敗した場合にトリガーが存在するのです。これまでには、以下のもの

1) Dump the triggers, events and stored routines in a separate file. この行使-E-Rパのほか、-t-dる堆積場のトリガー)、mysqldumpをコマンドです。一度トリガーが出力されますし、必要なものを落としてからのスキーマ、テーブルの名前を変更コマンドです。

 $ mysqldump <old_schema_name> -d -t -R -E > stored_routines_triggers_events.out

2) の発生リストの"BASE"を参照。こうすることができ、問い合せ information_schema.TABLES 表に示す。

 mysql> select TABLE_NAME from information_schema.tables where 
    table_schema='<old_schema_name>' and TABLE_TYPE='BASE TABLE';

3) ダンプのビューを行い、また、そのファイルです。眺望することができ、クエリと同じ information_schema.TABLES 表に示す。

mysql> select TABLE_NAME from information_schema.tables where 
   table_schema='<old_schema_name>' and TABLE_TYPE='VIEW';
 $ mysqldump <database> <view1> <view2> … > views.out

4) ドトリガーの現在のテーブルのold_schema.

mysql> DROP TRIGGER <trigger_name>;
...

5) 回復のダンプファイルを一度にすべてのテーブルからステップ#2。

mysql> RENAME TABLE <old_schema>.table_name TO <new_schema>.table_name;
...
$ mysql <new_schema> < views.out
$ mysql <new_schema> < stored_routines_triggers_events.out

練上記の方法:して更新する必要があるの補助金を用い、正しいschema_name.これらが固定され、簡単な更新イナリを使用しています。columns_priv、mysql.procs_priv、mysql.tables_priv、mysql.dbテーブルの更新old_schema名new_schema話"フラッシュ特典;".は方法"2"のように見えるビットの複雑化の方法"1"以外のこで選択した).簡単なバスクリプトを実施のセキュリティ"メニュー画面に適切に配列できる省スペースながら時間名を変更したいデータベースシステムの主要なテーマです。

のPerconaリモートDBAチームを書いているスクリプトというrename_db"とすること次のようになっています:

[root@dba~]# /tmp/rename_db
rename_db <server> <database> <new_database>

を発揮するこのスクリプト使用例をスキーマ"電磁ポンプ"の作成、試験をトリガ,ストアドプロシージャとファンがschema.う名前の変更、データベース用のスクリプトの一部の使に対して時間がかかるダンプ/復元方法。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| emp                |
| mysql              |
| performance_schema |
| test               |
+--------------------+


[root@dba ~]# time /tmp/rename_db localhost emp emp_test
create database emp_test DEFAULT CHARACTER SET latin1
drop trigger salary_trigger
rename table emp.__emp_new to emp_test.__emp_new
rename table emp._emp_new to emp_test._emp_new
rename table emp.departments to emp_test.departments
rename table emp.dept to emp_test.dept
rename table emp.dept_emp to emp_test.dept_emp
rename table emp.dept_manager to emp_test.dept_manager
rename table emp.emp to emp_test.emp
rename table emp.employees to emp_test.employees
rename table emp.salaries_temp to emp_test.salaries_temp
rename table emp.titles to emp_test.titles
loading views
loading triggers, routines and events
Dropping database emp

real    0m0.643s
user    0m0.053s
sys     0m0.131s


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| emp_test           |
| mysql              |
| performance_schema |
| test               |
+--------------------+

ご覧のとおり、上記の出力のデータベースのスキーマ"電磁ポンプ"へと名称変更を行う"emp_test"を秒以下最後に、このスクリプトからPerconaに使用される、上記方法は2です。

#!/bin/bash
# Copyright 2013 Percona LLC and/or its affiliates
set -e
if [ -z "$3" ]; then
    echo "rename_db <server> <database> <new_database>"
    exit 1
fi
db_exists=`mysql -h $1 -e "show databases like '$3'" -sss`
if [ -n "$db_exists" ]; then
    echo "ERROR: New database already exists $3"
    exit 1
fi
TIMESTAMP=`date +%s`
character_set=`mysql -h $1 -e "show create database $2\G" -sss | grep ^Create | awk -F'CHARACTER SET ' '{print $2}' | awk '{print $1}'`
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
STATUS=$?
if [ "$STATUS" != 0 ] || [ -z "$TABLES" ]; then
    echo "Error retrieving tables from $2"
    exit 1
fi
echo "create database $3 DEFAULT CHARACTER SET $character_set"
mysql -h $1 -e "create database $3 DEFAULT CHARACTER SET $character_set"
TRIGGERS=`mysql -h $1 $2 -e "show triggers\G" | grep Trigger: | awk '{print $2}'`
VIEWS=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='VIEW'" -sss`
if [ -n "$VIEWS" ]; then
    mysqldump -h $1 $2 $VIEWS > /tmp/${2}_views${TIMESTAMP}.dump
fi
mysqldump -h $1 $2 -d -t -R -E > /tmp/${2}_triggers${TIMESTAMP}.dump
for TRIGGER in $TRIGGERS; do
    echo "drop trigger $TRIGGER"
    mysql -h $1 $2 -e "drop trigger $TRIGGER"
done
for TABLE in $TABLES; do
    echo "rename table $2.$TABLE to $3.$TABLE"
    mysql -h $1 $2 -e "SET FOREIGN_KEY_CHECKS=0; rename table $2.$TABLE to $3.$TABLE"
done
if [ -n "$VIEWS" ]; then
    echo "loading views"
    mysql -h $1 $3 < /tmp/${2}_views${TIMESTAMP}.dump
fi
echo "loading triggers, routines and events"
mysql -h $1 $3 < /tmp/${2}_triggers${TIMESTAMP}.dump
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
if [ -z "$TABLES" ]; then
    echo "Dropping database $2"
    mysql -h $1 $2 -e "drop database $2"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.columns_priv where db='$2'" -sss` -gt 0 ]; then
    COLUMNS_PRIV="    UPDATE mysql.columns_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.procs_priv where db='$2'" -sss` -gt 0 ]; then
    PROCS_PRIV="    UPDATE mysql.procs_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.tables_priv where db='$2'" -sss` -gt 0 ]; then
    TABLES_PRIV="    UPDATE mysql.tables_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.db where db='$2'" -sss` -gt 0 ]; then
    DB_PRIV="    UPDATE mysql.db set db='$3' WHERE db='$2';"
fi
if [ -n "$COLUMNS_PRIV" ] || [ -n "$PROCS_PRIV" ] || [ -n "$TABLES_PRIV" ] || [ -n "$DB_PRIV" ]; then
    echo "IF YOU WANT TO RENAME the GRANTS YOU NEED TO RUN ALL OUTPUT BELOW:"
    if [ -n "$COLUMNS_PRIV" ]; then echo "$COLUMNS_PRIV"; fi
    if [ -n "$PROCS_PRIV" ]; then echo "$PROCS_PRIV"; fi
    if [ -n "$TABLES_PRIV" ]; then echo "$TABLES_PRIV"; fi
    if [ -n "$DB_PRIV" ]; then echo "$DB_PRIV"; fi
    echo "    flush privileges;"
fi

できる名前を変更するすべてのテーブル内のデータベースを別のデータベースなしであることを示すインターフェース内容:輸出入-貿易-復帰いたします。

DROP PROCEDURE IF EXISTS mysql.rename_db;
DELIMITER ||
CREATE PROCEDURE mysql.rename_db(IN old_db VARCHAR(100), IN new_db VARCHAR(100))
BEGIN
SELECT CONCAT('CREATE DATABASE ', new_db, ';') `# create new database`;
SELECT CONCAT('RENAME TABLE `', old_db, '`.`', table_name, '` TO `', new_db, '`.`', table_name, '`;') `# alter table` FROM information_schema.tables WHERE table_schema = old_db;
SELECT CONCAT('DROP DATABASE `', old_db, '`;') `# drop old database`;
END||
DELIMITER ;

$ time mysql -uroot -e "call mysql.rename_db('db1', 'db2');" | mysql -uroot

しかし他のトリガーのdbになります。る必要があります落として初めて目に再現した後の名前を変更します。

mysql -uroot -e "call mysql.rename_db('test', 'blah2');" | mysql -uroot
ERROR 1435 (HY000) at line 4: Trigger in wrong schema

多くの答えがここで間違いのは、次の二つの理由

  1. だけでなくテーブルリネームの使用が可意をトリガーとする。がある場合にトリガー、テーブル名の変更に失敗した
  2. 利用できませんmysqldumpをしたい場合は"迅速"として要求された場合には、当該う名前の変更、ビッグデータベース

Perconaはブログをどうなもの:https://www.percona.com/blog/2013/12/24/renaming-database-schema-mysql/

スクリプトに掲載(作?) によるサイモン-R-ジョーンズなどが示唆される。私はバグ修正があったのです。ことができま

https://gist.github.com/ryantm/76944318b0473ff25993ef2a7186213d

ここにコピーする

#!/bin/bash
# Copyright 2013 Percona LLC and/or its affiliates
# @see https://www.percona.com/blog/2013/12/24/renaming-database-schema-mysql/
set -e
if [ -z "$3" ]; then
    echo "rename_db <server> <database> <new_database>"
    exit 1
fi
db_exists=`mysql -h $1 -e "show databases like '$3'" -sss`
if [ -n "$db_exists" ]; then
    echo "ERROR: New database already exists $3"
    exit 1
fi
TIMESTAMP=`date +%s`
character_set=`mysql -h $1 -e "SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = '$2'" -sss`
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
STATUS=$?
if [ "$STATUS" != 0 ] || [ -z "$TABLES" ]; then
    echo "Error retrieving tables from $2"
    exit 1
fi
echo "create database $3 DEFAULT CHARACTER SET $character_set"
mysql -h $1 -e "create database $3 DEFAULT CHARACTER SET $character_set"
TRIGGERS=`mysql -h $1 $2 -e "show triggers\G" | grep Trigger: | awk '{print $2}'`
VIEWS=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='VIEW'" -sss`
if [ -n "$VIEWS" ]; then
    mysqldump -h $1 $2 $VIEWS > /tmp/${2}_views${TIMESTAMP}.dump
fi
mysqldump -h $1 $2 -d -t -R -E > /tmp/${2}_triggers${TIMESTAMP}.dump
for TRIGGER in $TRIGGERS; do
    echo "drop trigger $TRIGGER"
    mysql -h $1 $2 -e "drop trigger $TRIGGER"
done
for TABLE in $TABLES; do
    echo "rename table $2.$TABLE to $3.$TABLE"
    mysql -h $1 $2 -e "SET FOREIGN_KEY_CHECKS=0; rename table $2.$TABLE to $3.$TABLE"
done
if [ -n "$VIEWS" ]; then
    echo "loading views"
    mysql -h $1 $3 < /tmp/${2}_views${TIMESTAMP}.dump
fi
echo "loading triggers, routines and events"
mysql -h $1 $3 < /tmp/${2}_triggers${TIMESTAMP}.dump
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
if [ -z "$TABLES" ]; then
    echo "Dropping database $2"
    mysql -h $1 $2 -e "drop database $2"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.columns_priv where db='$2'" -sss` -gt 0 ]; then
    COLUMNS_PRIV="    UPDATE mysql.columns_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.procs_priv where db='$2'" -sss` -gt 0 ]; then
    PROCS_PRIV="    UPDATE mysql.procs_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.tables_priv where db='$2'" -sss` -gt 0 ]; then
    TABLES_PRIV="    UPDATE mysql.tables_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.db where db='$2'" -sss` -gt 0 ]; then
    DB_PRIV="    UPDATE mysql.db set db='$3' WHERE db='$2';"
fi
if [ -n "$COLUMNS_PRIV" ] || [ -n "$PROCS_PRIV" ] || [ -n "$TABLES_PRIV" ] || [ -n "$DB_PRIV" ]; then
    echo "IF YOU WANT TO RENAME the GRANTS YOU NEED TO RUN ALL OUTPUT BELOW:"
    if [ -n "$COLUMNS_PRIV" ]; then echo "$COLUMNS_PRIV"; fi
    if [ -n "$PROCS_PRIV" ]; then echo "$PROCS_PRIV"; fi
    if [ -n "$TABLES_PRIV" ]; then echo "$TABLES_PRIV"; fi
    if [ -n "$DB_PRIV" ]; then echo "$DB_PRIV"; fi
    echo "    flush privileges;"
fi

保存してくださいというファイルと rename_db のスクリプトの実行と chmod +x rename_db そのような気分で使ってくだ ./rename_db localhost old_db new_db

こちらはバッチファイルに書いた自動化し、コマンドラインから、Windows/MS-DOS.

書式はrename_mysqldbデータベースnewdatabase-u[ユーザ]-p[パスワード]

:: ***************************************************************************
:: FILE: RENAME_MYSQLDB.BAT
:: ***************************************************************************
:: DESCRIPTION
:: This is a Windows /MS-DOS batch file that automates renaming a MySQL database 
:: by using MySQLDump, MySQLAdmin, and MySQL to perform the required tasks.
:: The MySQL\bin folder needs to be in your environment path or the working directory.
::
:: WARNING: The script will delete the original database, but only if it successfully
:: created the new copy. However, read the disclaimer below before using.
::
:: DISCLAIMER
:: This script is provided without any express or implied warranties whatsoever.
:: The user must assume the risk of using the script.
::
:: You are free to use, modify, and distribute this script without exception.
:: ***************************************************************************

:INITIALIZE
@ECHO OFF
IF [%2]==[] GOTO HELP
IF [%3]==[] (SET RDB_ARGS=--user=root) ELSE (SET RDB_ARGS=%3 %4 %5 %6 %7 %8 %9)
SET RDB_OLDDB=%1
SET RDB_NEWDB=%2
SET RDB_DUMPFILE=%RDB_OLDDB%_dump.sql
GOTO START

:START
SET RDB_STEP=1
ECHO Dumping "%RDB_OLDDB%"...
mysqldump %RDB_ARGS% %RDB_OLDDB% > %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=2
ECHO Creating database "%RDB_NEWDB%"...
mysqladmin %RDB_ARGS% create %RDB_NEWDB%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=3
ECHO Loading dump into "%RDB_NEWDB%"...
mysql %RDB_ARGS% %RDB_NEWDB% < %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=4
ECHO Dropping database "%RDB_OLDDB%"...
mysqladmin %RDB_ARGS% drop %RDB_OLDDB% --force
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=5
ECHO Deleting dump...
DEL %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
ECHO Renamed database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END

:ERROR_ABORT
IF %RDB_STEP% GEQ 3 mysqladmin %RDB_ARGS% drop %NEWDB% --force
IF %RDB_STEP% GEQ 1 IF EXIST %RDB_DUMPFILE% DEL %RDB_DUMPFILE%
ECHO Unable to rename database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END

:HELP
ECHO Renames a MySQL database.
ECHO Usage: %0 database new_database [OPTIONS]
ECHO Options: Any valid options shared by MySQL, MySQLAdmin and MySQLDump.
ECHO          --user=root is used if no options are specified.
GOTO END    

:END
SET RDB_OLDDB=
SET RDB_NEWDB=
SET RDB_ARGS=
SET RDB_DUMP=
SET RDB_STEP=

TodoInTXの保存手順んからの作業だった。ここでの私の刺しです:

-- stored procedure rename_db: Rename a database my means of table copying.
-- Caveats: 
-- Will clobber any existing database with the same name as the 'new' database name.
-- ONLY copies tables; stored procedures and other database objects are not copied.
-- Tomer Altman (taltman@ai.sri.com)

delimiter //
DROP PROCEDURE IF EXISTS rename_db;
CREATE PROCEDURE rename_db(IN old_db VARCHAR(100), IN new_db VARCHAR(100))
BEGIN
    DECLARE current_table VARCHAR(100);
    DECLARE done INT DEFAULT 0;
    DECLARE old_tables CURSOR FOR select table_name from information_schema.tables where table_schema = old_db;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    SET @output = CONCAT('DROP SCHEMA IF EXISTS ', new_db, ';'); 
    PREPARE stmt FROM @output;
    EXECUTE stmt;

    SET @output = CONCAT('CREATE SCHEMA IF NOT EXISTS ', new_db, ';');
    PREPARE stmt FROM @output;
    EXECUTE stmt;

    OPEN old_tables;
    REPEAT
        FETCH old_tables INTO current_table;
        IF NOT done THEN
        SET @output = CONCAT('alter table ', old_db, '.', current_table, ' rename ', new_db, '.', current_table, ';');
        PREPARE stmt FROM @output;
        EXECUTE stmt;

        END IF;
    UNTIL done END REPEAT;

    CLOSE old_tables;

END//
delimiter ;

手順:

  1. ヒット http://localhost/phpmyadmin/
  2. 選択DB
  3. をクリック操作タブ
  4. がありますのタブとして"名前を変更データベースにお楽しみいただけます。※新しい名前とチェックを調整す特典をご利用いただけます。
  5. クリックします。

enter image description here

I たちに、次の問いかけをもたらサーバー上の断層 ることができるよう周りのダウンタイムを復元するうえで非常に大規模データベースによりMySQLを使用して行います。かにはなかったが成功を実現しまのたかったのは名前を変更したデータベース機能でダンプ/輸入ではなかったオプションによりサイズのデータベースです。

あるテーブル名の変更機能が組み込まれてMySQLようになってい書簡単なPythonスクリプトの仕事でした。私 に掲載しGitHub 場合での使用。

便利にご利用いただけるよう、以下の小さなshellscriptが実行される二つのパラメータ:db名前と新しいdb-名です。

必要がある場合があります追加のログイン-パラメータはmysqlのラインを組み合わせて使用しない場合は、.my.cnfファイルをご家庭をクリックします。くださいバックアップを実行する前に、このスクリプト


#!/usr/bin/env bash

mysql -e "CREATE DATABASE $2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
for i in $(mysql -Ns $1 -e "show tables");do
    echo "$1.$i -> $2.$i"
    mysql -e "rename TABLE $1.$i to $2.$i"
done
mysql -e "DROP DATABASE $1"

最も簡単な方法は使用HeidiSQLソフトウェアです。無料で、オープンソースです。全てのWindowsやLinux ワイン (WindowsアプリケーションにLinux、BSD,Solaris,Mac OS X).

ダウンロードHeidiSQL、後藤 http://www.heidisql.com/download.php.

ダウンロードワイン、後藤 http://www.winehq.org/.

名前を変更データベースHeidiSQL、右クリックし、データベース名を選んで"編集"を選択することにより.を入力して新しい名前のプレス'OK'.

でエネルギーのことです。

こちらが早い方法で生成したsqlスクリプトの場合、多くのテーブルを移動します。

SELECT DISTINCT CONCAT('RENAME TABLE ', t.table_schema,'.', t.table_name, ' TO ',     
t.table_schema, "_archive", '.', t.table_name, ';' ) as Rename_SQL 
FROM information_schema.tables t
WHERE table_schema='your_db_name' ;

う好は述べたように、このメソッドはここでは別の方法:

create database NewDatabaseName like OldDatabaseName;

そして各テーブル:

create NewDatabaseName.tablename like OldDatabaseName.tablename;
insert into NewDataBaseName.tablename select * from OldDatabaseName.tablename;

したい場合には、

drop database OldDatabaseName;

このアプローチを活用して全体を転送サーバーとゼロ付近、ネットワークのトラフィックまれるもののスピードダンプ/復帰いたします。

が発見された場合には保存の手続き/views/etcするために移転しました。

Macユーザーに利用できる Sequel Pro あり(無料)へのこだわりのオプションの名前の変更はデータベースです。かなり削除のDBです。

一度に関連するDBボタンをクリックするだけ: Database --> Rename database...

MySQL管理者は、以下の

  1. 下のカタログ、新しいデータベースのスキーマ.
  2. へのバックアップをバックアップ 旧schema.
  3. 実行バックアップ。
  4. への復元とそのファイルを開く 作成されたステップ3.
  5. を選択"もうひとつのスキーマ"を目標 スキーマを選んで、新しいデータベース schema.
  6. 開始復帰いたします。
  7. 検証の新たなスキーマが見えます 良を削除します。

phpmyadmin 簡単に名前を変更、データベース

select database 

  goto operations tab

  in that rename Database to :

  type your new database name and click go

お願い落と古いテーブルとリロードテーブルデータの[OK]をクリックしても

データベースに改称

ご利用の場合 phpMyAdmin この"操作"タブを選択したデータベースにしたい名前を変更します。そして最後の部"のコピーデータベース"(もしくは類似したもの)は、名前を選択のオプションです。この場合、この思いを選択してください"構造データの作成データベースからコピー"チェックボックスにチェックが入り、最後に、"go"ボタンを押しているのです。

ちなみに、私が使っているphpMyAdminスペイン語でお使いいただくことによって、名前の部分は英語によります。

こちらは一線Bashのスニペットを移動するすべてのテーブルからスキーマ別:

history -d $((HISTCMD-1)) && mysql -udb_user -p'db_password' -Dold_schema -ABNnqre'SHOW TABLES;' | sed -e's/.*/RENAME TABLE old_schema.`&` TO new_schema.`&`;/' | mysql -udb_user -p'db_password' -Dnew_schema

の履歴のコマンドになることで、MySQLコマンドを含むパスワードなに保存されたシェルの歴史。

db_user はread/write/drop権限のスキーマ、およびread/write/create権限は、新しいスキーマ.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top