ETest-Vue-FastAPI/migrate.bat

139 lines
3.8 KiB
Batchfile
Raw Permalink Normal View History

2026-03-30 10:38:36 +08:00
@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