九溪

溪水润知林,滴露启慧心

用户工具

站点工具


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