wiki:windows:windows-cmd-script
批处理常用脚本:MYSQL相关
本示例是 MySQL 安装、卸载、数据导入、数据导出 相关脚本。
创建了环境变量 %MYSQL_HOME% 用于标识程序已安装。
以下脚本下载后,请使用ANSI编码保存,否则中文乱码。
样例1:登陆MySQL
说明:登陆前,判断是否已安装MySQL,如果未安装,则调用样例2脚本安装并启动服务,安装后,会使用默认用户密码登陆MySQL
- 00_run.bat
@echo off echo. echo %date% %time% echo. SET curDir=%~dp0 echo 当前路径为 %curDir% echo. SC QUERY MySQL > NUL rem 如果服务存在,跳转至 serverexist 标签 if ERRORLEVEL 1060 goto servernotexist goto serverexist :serverexist echo 将自动使用默认账户登录MYSQL,请注意及时修改密码 echo. pause "%curDir%bin\mysql" -h localhost -u root -pmysqld goto end :servernotexist rem echo 开始执行安装 echo MySQL 服务无效,将要自动执行安装 echo. call 01_install_then_run_server.bat echo. goto end :end pause
样例2:安装并启动MYSQL服务
设置my.ini、安装 MySQL 服务然后启动服务、设置 MySQL_HOME 环境变量
(如果已有服务,则判断是否进行卸载)
- 01_install_then_run_server.bat
@echo off echo. echo %date% %time% echo. SET curDir=%~dp0 echo 当前路径为 %curDir% echo. SC QUERY MySQL > NUL rem 如果服务存在,跳转至 serverexist 标签 if ERRORLEVEL 1060 goto servernotexist goto serverexist :serverexist echo 服务已存在,程序将会卸载该服务,然后再继续安装。 echo. set /p choice=请按 Y 然后回车继续执行安装,或者按任意键退出: echo. if /i "%choice%" == "Y" goto choice_y_because_server_exist goto end :choice_y_because_server_exist rem 继续安装 echo ********************************************************** echo 卸载已有服务 echo. net stop MySQL sc delete MySQL goto beginsetup :servernotexist rem echo 开始执行安装 goto beginsetup :beginsetup echo. echo ********************************************************** echo. echo 开始安装 MySQL (共3步) echo. rem pause echo 1. 设置配置文件 echo. rem 从 my_default.ini 中拷贝文本至my.ini set mydefaultini="%curDir%my_default.ini" set myini="%curDir%my.ini" rem 清空文件,重新写入 if exist %myini% ( del %myini% ) rem usebackq 支持文件路径中带空格 for /f "usebackq tokens=1,* delims= " %%i in (%mydefaultini%) do ( rem 追加内容 echo %%i %%j>>%myini% ) set line1=basedir="%curDir%" echo %line1%>>%myini% set line2=datadir="%curDir%data" echo %line2%>>%myini% echo 配置文件配置完成 echo. echo 2. 安装 MySQL 服务 echo. cd bin mysqld install echo MySQL 服务安装完成 echo. echo 3. 正在启动 MySQL 服务 echo. net start mysql echo MySQL 服务启动完成 echo. echo ********************************************************** echo 正在设置环境变量 echo. rem 左单引号,能够支持包含空格的路径 set environment_path="%curDir% setx /M MYSQL_HOME %environment_path% echo 已设置环境变量 MYSQL_HOME = %environment_path% echo. echo ********************************************************** echo. echo 请查阅提示信息 cd ../ call ReadMeAfterInstalled.txt echo. echo 将自动使用默认账户登录MYSQL,请注意及时修改密码 echo. pause "%curDir%bin\mysql" -h localhost -u root -pmysqld echo. :end pause
样例3:停止并删除服务
- 02_stop_then_del_server.bat
@echo off SC QUERY MySQL > NUL if ERRORLEVEL 1060 goto servernotexist goto serverexist :serverexist net stop MySQL sc delete MySQL goto goon :servernotexist echo server not exist goto goon :goon if exist my.ini ( del my.ini ) echo ********************************************************** echo 正在删除环境变量 echo. setx /M MYSQL_HOME "" REG delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V MYSQL_HOME echo 已删除环境变量 MYSQL_HOME echo. echo ********************************************************** echo uninstalled. pause
样例4:导入数据
如果 TestDatabase 数据库存在,首先将其销毁。
然后创建 TestDatabase 数据库,向该数据库导入脚本所在目录下的 TestDatabase.sql 数据
- 01_build_data.bat
@echo off echo. echo %date% %time% echo. SET curDir=%~dp0 echo 当前路径为 %curDir% echo. if /i "%MYSQL_HOME%" == "" goto mysqlnotexist goto mysqlexist :mysqlexist echo. echo MYSQL_HOME 环境变量有效 echo %MYSQL_HOME% echo. goto dothing :mysqlnotexist echo. echo MYSQL_HOME 环境变量无效,请检查 echo. goto end :dothing set databasename=TestDatabase set sqlfile=%curDir%tempimportsql.sql rem sql脚本文件名称与数据库名称一致 set importsql=%curDir%%databasename%.sql rem 创建sql脚本 if exist %sqlfile% ( del %sqlfile% ) echo drop database if exists %databasename%;>>%sqlfile% echo create database %databasename%;>>%sqlfile% echo use %databasename%;>>%sqlfile% echo source %importsql%>>%sqlfile% echo 生成脚本成功,开始执行导入 echo. pause %MYSQL_HOME%bin\mysql -h localhost -u root -pmysqld<%sqlfile% echo. echo 数据导入成功 echo. rem 删除sql脚本 if exist %sqlfile% ( del %sqlfile% ) :end pause
样例5:删除数据库
删除 TestDatabase 数据库
- 02_destroy_data.bat
@echo off echo. echo %date% %time% echo. SET curDir=%~dp0 echo 当前路径为 %curDir% echo. if /i "%MYSQL_HOME%" == "" goto mysqlnotexist goto mysqlexist :mysqlexist echo. echo MYSQL_HOME 环境变量有效 echo %MYSQL_HOME% echo. goto dothing :mysqlnotexist echo. echo MYSQL_HOME 环境变量无效,请检查 echo. goto end :dothing set databasename=TestDatabase set sqlfile=%curDir%tempimportsql.sql rem 创建sql脚本 if exist %sqlfile% ( del %sqlfile% ) echo drop database if exists %databasename%;>>%sqlfile% echo 生成脚本成功,将要删除数据库: %databasename% echo. pause %MYSQL_HOME%bin\mysql -h localhost -u root -pmysqld<%sqlfile% echo. echo 执行成功 echo. rem 删除sql脚本 if exist %sqlfile% ( del %sqlfile% ) :end pause
样例6:数据导出
将 TestDatabase 数据库中的数据导出到 TestDatabase_export.sql
- 03_export_data.bat
@echo off echo. echo %date% %time% echo. SET curDir=%~dp0 echo 当前路径为 %curDir% echo. if /i "%MYSQL_HOME%" == "" goto mysqlnotexist goto mysqlexist :mysqlexist echo. echo MYSQL_HOME 环境变量有效 echo %MYSQL_HOME% echo. goto dothing :mysqlnotexist echo. echo MYSQL_HOME 环境变量无效,请检查 echo. goto end :dothing set databasename=TestDatabase set databasefile=%MYSQL_HOME%data\%databasename%\db.opt rem 判断数据库目录是否存在,如果存在则继续进行删除 if exist %databasefile% goto dodelete goto giveupdelete :giveupdelete echo. echo 警告:数据库不存在,无法导出,请检查。 echo. goto end :dodelete set sqlfile=%databasename%_export.sql rem 创建sql脚本 if exist %sqlfile% ( del %sqlfile% ) echo. echo 将要备份数据库 %databasename% 到 %sqlfile% echo. pause %MYSQL_HOME%bin\mysqldump -h localhost -u root -pmysqld %databasename% > %sqlfile% echo. echo 执行成功 echo. echo *************************** echo. echo 如需使用 01_build_data.bat 执行导入, echo. echo 请将 %sqlfile% 命名为 %databasename%.sql echo. echo *************************** :end pause
wiki/windows/windows-cmd-script.txt · 最后更改: 2023/01/03 15:25 由 127.0.0.1
评论