MySQL의 데이터베이스 이름 변경
MySQL에 데이터베이스 이름을 변경하는 명령이 없습니다.
MySQL에는 데이터베이스 이름을 변경하는 명령이 없는 것 같습니다. 다른 방법을 찾아보니
RENAME TABLE
로 모든 테이블을 이동하는 방법(데이터에 링크만 설정된 테이블입니까?🤔)데이터 양이 맞으면 시간이 걸리기 때문에
RENAME TABLE
dump를 하고 싶습니다.모든 테이블에서 RENAME TABLE가 귀찮아서 스크립트를 썼어요.
사용법
./dbrename.bash --host=db --user=root -password=root --database=src --rename=dest
매개 변수설명
--host
연결된 MySQL 서버
--user
서버 연결에 사용된 MySQL 사용자 이름
--password
서버 연결에 사용되는 암호
--database
수정할 데이터베이스 이름
--rename
새 데이터베이스 이름
각본
dbrename.bash
#!/bin/bash
# -*- coding: utf-8 -*-
function usage() {
echo "Usage: dbrename --host=[host_name] --user=[user_name] -password=[password] --database=[src] --rename=[dest]"
echo " -I | --help "
echo " -h | --host <str> 接続するMySQLサーバー"
echo " -u | --user <str> サーバー接続時に使用するMySQLユーザー名"
echo " -p | --password <str> サーバー接続時に使用するパスワード"
echo " -d | --database <str> 変更したいデータベースの名前"
echo " -r | --rename <str> 新しいデータベース名"
}
function error() {
echo $1 >&2
exit 1
}
readonly ARGUMENT=$@
readonly OPTION_SHORT="I,h:,u:,p:,d:,r:"
readonly OPTION_LONG="help,host:,user:,password:,database:,rename:"
OPT=`getopt -o $OPTION_SHORT -l $OPTION_LONG -- $ARGUMENT` || exit 1
eval set -- $OPT
while :; do
case $1 in
-I | --help)
usage
exit 0
;;
-h | --host)
readonly HOSTNAME=$2
shift 2
;;
-u | --user)
readonly USERNAME=$2
shift 2
;;
-p | --password)
readonly PASSWORD=$2
shift 2
;;
-d | --database)
readonly DATABASE=$2
shift 2
;;
-r | --rename)
readonly RENAME=$2
shift 2
;;
--)
shift
break
;;
*)
error "Unknows options ${1}"
;;
esac
done
if [ -z $HOSTNAME ]; then
error "Require option --host"
fi
if [ -z $USERNAME ]; then
error "Require option --user"
fi
if [ -z $PASSWORD ]; then
error "Require option --password"
fi
if [ -z $DATABASE ]; then
error "Require option --database"
fi
if [ -z $RENAME ]; then
error "Require option --rename"
fi
# コマンドの作成
# 1. 新しいデータベースを作成
# 2. 元のデータベースから新しいデータベースにテーブルを移動
# 3. 元のデータベースを削除
readonly CREATE_DATABASE="create database ${RENAME};"
TABLES=`mysql --host=$HOSTNAME --user=$USERNAME --password=$PASSWORD -e "use ${DATABASE}; show tables;" -s -N` || exit 1
RENAME_TABLE_LIST=
for TABLE in $TABLES
do
RENAME_TABLE="rename table ${DATABASE}.${TABLE} to ${RENAME}.${TABLE};"
RENAME_TABLE_LIST="${RENAME_TABLE_LIST} ${RENAME_TABLE}"
done
readonly DROP_DATABASE="drop database ${DATABASE};"
# コマンドの実行
mysql --host=$HOSTNAME --user=$USERNAME --password=$PASSWORD -e "${CREATE_DATABASE} ${RENAME_TABLE_LIST} ${DROP_DATABASE}"
Reference
이 문제에 관하여(MySQL의 데이터베이스 이름 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/naotake/articles/mysql-dbrename텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)