139 lines
3.8 KiB
Batchfile
139 lines
3.8 KiB
Batchfile
@echo off
|
|
chcp 65001
|
|
REM ETest 数据库迁移执行脚本
|
|
REM 执行前请确保已备份数据库
|
|
|
|
echo ========================================
|
|
echo ETest 数据库迁移执行工具
|
|
echo ========================================
|
|
echo.
|
|
|
|
REM 检查参数
|
|
if "%~1"=="" (
|
|
echo 用法: migrate.bat [阶段] [数据库配置]
|
|
echo.
|
|
echo 阶段:
|
|
echo phase1 - 执行第一阶段迁移(基础表)
|
|
echo phase2 - 执行第二阶段迁移(工单扩展)
|
|
echo phase3 - 执行第三阶段迁移(报告表)
|
|
echo all - 执行全部三个阶段
|
|
echo.
|
|
echo 示例:
|
|
echo migrate.bat phase1
|
|
echo migrate.bat all
|
|
echo.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
set PHASE=%~1
|
|
set MYSQL_HOST=localhost
|
|
set MYSQL_PORT=3306
|
|
set MYSQL_USER=root
|
|
set MYSQL_PASS=your_password
|
|
set MYSQL_DB=etest
|
|
|
|
REM 从 .env 文件读取配置(如果存在)
|
|
if exist .env (
|
|
for /f "tokens=1,2 delims==" %%a in (.env) do (
|
|
if "%%a"=="DB_HOST" set MYSQL_HOST=%%b
|
|
if "%%a"=="DB_PORT" set MYSQL_PORT=%%b
|
|
if "%%a"=="DB_USER" set MYSQL_USER=%%b
|
|
if "%%a"=="DB_PASS" set MYSQL_PASS=%%b
|
|
if "%%a"=="DB_NAME" set MYSQL_DB=%%b
|
|
)
|
|
)
|
|
|
|
echo 数据库配置:
|
|
echo 主机: %MYSQL_HOST%
|
|
echo 端口: %MYSQL_PORT%
|
|
echo 数据库: %MYSQL_DB%
|
|
echo 用户: %MYSQL_USER%
|
|
echo.
|
|
|
|
REM 确认执行
|
|
echo 即将执行 %PHASE% 迁移
|
|
echo.
|
|
set /p CONFIRM="确认执行? (yes/no): "
|
|
if /i not "%CONFIRM%"=="yes" (
|
|
echo 已取消
|
|
exit /b 0
|
|
)
|
|
|
|
echo.
|
|
echo ========================================
|
|
|
|
REM 执行迁移
|
|
if "%PHASE%"=="phase1" (
|
|
echo 执行第一阶段迁移...
|
|
mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase1_base_tables.sql
|
|
if %errorlevel% neq 0 (
|
|
echo [错误] 第一阶段迁移失败
|
|
exit /b 1
|
|
)
|
|
echo [成功] 第一阶段迁移完成
|
|
)
|
|
|
|
if "%PHASE%"=="phase2" (
|
|
echo 执行第二阶段迁移...
|
|
mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase2_workorder_extend.sql
|
|
if %errorlevel% neq 0 (
|
|
echo [错误] 第二阶段迁移失败
|
|
exit /b 1
|
|
)
|
|
echo [成功] 第二阶段迁移完成
|
|
)
|
|
|
|
if "%PHASE%"=="phase3" (
|
|
echo 执行第三阶段迁移...
|
|
mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase3_report_tables.sql
|
|
if %errorlevel% neq 0 (
|
|
echo [错误] 第三阶段迁移失败
|
|
exit /b 1
|
|
)
|
|
echo [成功] 第三阶段迁移完成
|
|
)
|
|
|
|
if "%PHASE%"=="all" (
|
|
echo 执行全部三个阶段...
|
|
echo.
|
|
|
|
echo [1/3] 执行第一阶段迁移...
|
|
mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase1_base_tables.sql
|
|
if %errorlevel% neq 0 (
|
|
echo [错误] 第一阶段迁移失败
|
|
exit /b 1
|
|
)
|
|
echo [成功] 第一阶段迁移完成
|
|
echo.
|
|
|
|
echo [2/3] 执行第二阶段迁移...
|
|
mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase2_workorder_extend.sql
|
|
if %errorlevel% neq 0 (
|
|
echo [错误] 第二阶段迁移失败
|
|
exit /b 1
|
|
)
|
|
echo [成功] 第二阶段迁移完成
|
|
echo.
|
|
|
|
echo [3/3] 执行第三阶段迁移...
|
|
mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase3_report_tables.sql
|
|
if %errorlevel% neq 0 (
|
|
echo [错误] 第三阶段迁移失败
|
|
exit /b 1
|
|
)
|
|
echo [成功] 第三阶段迁移完成
|
|
)
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo 迁移执行完成
|
|
echo ========================================
|
|
echo.
|
|
echo 请检查:
|
|
echo 1. 表结构是否正确
|
|
echo 2. 索引是否创建
|
|
echo 3. 现有数据是否正常
|
|
echo.
|
|
pause
|