81 lines
2.1 KiB
Bash
81 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
useage() {
|
|
echo "usage: $0 user passwd sql_path [infix] [host] [port] [login_db]"
|
|
echo "user: 数据库用户名"
|
|
echo "passwd: 数据库密码"
|
|
echo "sql_path: 导入SQL文件路径"
|
|
echo "infix: 数据库名中缀 默认:sql_path指定的SQL文件的数据库名"
|
|
echo "host: 数据库IP地址 默认:${HOST}"
|
|
echo "port: 数据库端口号 默认:${PORT}"
|
|
echo "login_db: 登录服数据库 默认:${LOGIN_DB}"
|
|
}
|
|
|
|
# 执行SQL命令
|
|
excute() {
|
|
CMD="mysql -u ${USER} -p${PASSWD} -h ${HOST} -P ${PORT} -v -e \"$1\""
|
|
echo "执行: ${CMD}"
|
|
eval "${CMD}"
|
|
}
|
|
|
|
# 重建数据库
|
|
rebuild() {
|
|
excute "DROP DATABASE IF EXISTS ${GAME_DB};"
|
|
excute "DROP DATABASE IF EXISTS ${LOG_DB};"
|
|
excute "CREATE DATABASE IF NOT EXISTS ${GAME_DB};"
|
|
excute "CREATE DATABASE IF NOT EXISTS ${LOG_DB};"
|
|
}
|
|
|
|
# 导入数据库
|
|
import_sql(){
|
|
CMD="mysql -u ${USER} -p${PASSWD} -h ${HOST} -P ${PORT} ${GAME_DB} < ${SQL_PATH}"
|
|
echo "执行: ${CMD}"
|
|
|
|
eval "${CMD}"
|
|
}
|
|
|
|
# 插入玩家数据到登录数据库
|
|
insert_account(){
|
|
SQL="INSERT IGNORE INTO ${LOGIN_DB}.account_info SELECT CONCAT('0_', t.role_id), t.fn_name, '', t.register_time, 1, '#{}' FROM ${GAME_DB}.role t;"
|
|
excute "${SQL}"
|
|
}
|
|
|
|
# 修改游戏服角色信息
|
|
update_role() {
|
|
SQL="UPDATE ${GAME_DB}.role SET server_id=${SERVER_ID}, register_server_id=${SERVER_ID}, fn_platform=0;";
|
|
excute "${SQL}"
|
|
}
|
|
|
|
USER=$1
|
|
PASSWD=$2
|
|
SQL_PATH=$3
|
|
|
|
if [ -z "${USER}" ] || [ -z "${PASSWD}" ] || [ -z "${SQL_PATH}" ]; then
|
|
useage
|
|
else
|
|
INFIX=${4:-$(basename ${SQL_PATH} | cut -d_ -f3- | cut -d. -f1)}
|
|
|
|
if [ -n "${INFIX}" ]; then
|
|
HOST=${5:-localhost}
|
|
PORT=${6:-3306}
|
|
LOGIN_DB=${7:-ddxq_s900_trunk_login}
|
|
|
|
GAME_DB=ddxq_${INFIX}_game
|
|
LOG_DB=ddxq_${INFIX}_log
|
|
SERVER_ID=$(echo ${INFIX} | grep -o -E '[0-9]+')
|
|
|
|
echo "导入数据数据库: ${GAME_DB}"
|
|
echo "服务器ID: ${SERVER_ID}"
|
|
|
|
rebuild
|
|
import_sql
|
|
update_role
|
|
insert_account
|
|
|
|
echo "导入结束!"
|
|
else
|
|
echo "无法提取数据库中缀名,导入失败!"
|
|
fi
|
|
fi |