如何执行批量执行SQL的exe文件
概述
本文档详细说明了如何使用生成的 batch_exec_sql.exe 文件来批量执行SQL文件到MySQL数据库中。
执行位置
是的,您需要在SQL文件所在的目录下执行exe文件。
原因:
- 脚本会在当前执行目录中查找所有
.sql文件 - 如果在其他目录执行,可能会找不到需要执行的SQL文件
使用方法
方法一:直接在SQL文件目录执行
-
将exe文件复制到SQL文件目录
- 找到生成的
batch_exec_sql.exe文件(位于dist目录中) - 将其复制到包含SQL文件的目录中
- 找到生成的
-
运行exe文件
- 双击
batch_exec_sql.exe文件 - 或在命令行中进入该目录并执行
batch_exec_sql.exe
- 双击
-
输入配置信息
- 按照提示输入数据库配置信息,包括:
- 数据库主机地址(默认为localhost,直接按回车使用默认值)
- 数据库用户名(默认为root,直接按回车使用默认值)
- 数据库密码(输入时不会显示,确保输入正确)
- 数据库名称(默认为ims_dev,直接按回车使用默认值)
- 数据库端口(默认为3306,直接按回车使用默认值)
- 数据库字符集(默认为utf8mb4,直接按回车使用默认值)
- 按照提示输入数据库配置信息,包括:
-
等待执行完成
- 脚本会自动执行目录下的所有SQL文件
- 执行完成后,会显示执行结果统计
方法二:通过命令行指定目录
如果您不想复制exe文件,也可以通过命令行方式执行:
-
打开命令行窗口
- 按下
Win + R,输入cmd,然后按回车
- 按下
-
切换到SQL文件目录
- 使用
cd命令切换到包含SQL文件的目录 - 例如:
cd C:\path\to\sql\files
- 使用
-
执行exe文件
- 输入完整的exe文件路径并执行
- 例如:
C:\path\to\batch_exec_sql.exe
-
输入配置信息
- 与方法一相同,按照提示输入数据库配置信息
-
等待执行完成
- 执行完成后,会显示执行结果统计
执行过程示例
请输入数据库主机地址 [localhost]:
请输入数据库用户名 [root]:
请输入数据库密码:
请输入数据库名称 [ims_dev]:
请输入数据库端口 [3306]:
请输入数据库字符集 [utf8mb4]:
正在连接数据库...
数据库连接成功!
找到 128 个SQL文件
执行文件 1/128: act_app_appdef.sql
执行文件 2/128: act_app_databasechangelog.sql
...
执行文件 128/128: sys_user_role.sql
执行完成!
总文件数: 128
成功执行: 94
执行失败: 34
总执行时间: 2.28 秒
数据库连接已关闭
请按任意键继续...
常见问题及解决方案
1. 找不到SQL文件
问题:执行时显示 "找到 0 个SQL文件"
解决方案:
- 确保在SQL文件所在的目录下执行exe文件
- 确保目录中确实存在
.sql后缀的文件 - 检查文件扩展名是否正确(应为
.sql,而不是.txt等其他扩展名)
2. 数据库连接失败
问题:执行时显示 "数据库操作出错: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")"
解决方案:
- 检查数据库服务是否已启动
- 确保输入的数据库密码正确
- 确保数据库用户有足够的权限
- 确保数据库名称正确且已存在
3. 执行过程中出现错误
问题:执行某些SQL文件时出现错误
解决方案:
- 外键约束失败:调整SQL文件的执行顺序,先执行被依赖的表
- 主键重复:删除数据库中的现有数据,或修改SQL文件中的插入语句
- SQL语法错误:手动编辑SQL文件,移除非SQL内容
4. 执行完成后无响应
问题:执行完成后窗口没有自动关闭
解决方案:
- 这是正常现象,按任意键即可关闭窗口
注意事项
- 备份数据:执行前请备份数据库,以防数据丢失
- 权限问题:确保数据库用户有足够的权限执行SQL语句
- 文件编码:确保SQL文件的编码格式正确,建议使用UTF-8编码
- 执行顺序:对于有依赖关系的表,可能需要调整SQL文件的执行顺序
- 错误处理:脚本会尝试执行所有文件,即使某些文件执行失败也会继续执行其他文件
总结
- 必须在SQL文件所在的目录下执行exe文件
- 执行时会提示输入数据库配置信息,可使用默认值
- 执行完成后会显示详细的执行结果统计
- 对于执行失败的文件,需要根据错误信息手动处理
通过以上步骤,您可以轻松使用 batch_exec_sql.exe 文件批量执行SQL文件到MySQL数据库中,无需安装Python环境。