Files
rebar_server/game_server/shell/import_db.sh
T
2026-05-19 11:30:21 +08:00

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