Simple SQL 使用手册
大约 5 分钟
一个简单易用的 SQL 生成器,基于 JavaFx 实现的本地离线应用
📖 Excel转SQL详细使用指南
步骤1:准备Excel文件
Excel文件格式要求
- 第一行必须是表头(列名)
- 第二行开始是数据行
- 支持的格式: .xls, .xlsx
- 编码: UTF-8(推荐)
Excel文件示例
id | name | age | status | |
---|---|---|---|---|
1 | 张三 | 25 | zhangsan@example.com | active |
2 | 李四 | 30 | lisi@example.com | inactive |
3 | 王五 | 28 | wangwu@example.com | active |
步骤2:配置参数
必填参数
- 数据库表名: 目标数据库表名
- 语句类型: 选择要生成的SQL类型
- Excel文件: 选择要处理的Excel文件
可选参数
- 数据库库名: 数据库名称(可选)
- 条件列数: UPDATE/DELETE时指定WHERE条件的列数
步骤3:生成SQL
- 点击 "上传Excel文件" 选择文件
- 填写 "数据库表名"
- 选择 "语句类型"
- 如需指定数据库名,填写 "数据库库名"
- 对于UPDATE/DELETE,填写 "条件列数"
- 点击 "咻~~~(生成SQL)" 开始生成
步骤4:查看结果
生成完成后,可以:
- 点击 "打开文件" 直接查看生成的SQL文件
- 点击 "打开所在文件夹" 查看文件位置
🔧 SQL类型说明
1. SELECT 语句
用途: 生成查询语句,根据Excel数据构建WHERE条件
特点:
- 自动处理空值,使用
IS NULL
条件 - 相同值使用
=
比较 - 不同值使用
IN
批量查询 - 支持多列条件组合
生成示例:
SELECT * FROM `user_table` WHERE
`id` IN ('1', '2', '3') AND
`status` = 'active' AND
`email` IS NULL OR `email` IN ('zhangsan@example.com', 'lisi@example.com');
2. INSERT 语句
用途: 生成插入语句,将Excel数据插入数据库
特点:
- 批量插入,提高执行效率
- 自动处理空值,使用
NULL
- 支持所有列或指定列插入
- 保持数据完整性
生成示例:
INSERT INTO `user_table` (`id`, `name`, `age`, `email`, `status`) VALUES
('1', '张三', '25', 'zhangsan@example.com', 'active'),
('2', '李四', '30', 'lisi@example.com', 'inactive'),
('3', '王五', '28', NULL, 'active');
3. UPDATE 语句
用途: 生成更新语句,根据条件更新数据
特点:
- 支持单行更新和批量更新
- 智能判断是否使用批量操作
- 自动处理空值条件
- 条件列数可配置
批量更新示例:
UPDATE `user_table` SET
`age` = '25',
`status` = 'active'
WHERE `id` IN ('1', '2', '3');
单行更新示例:
UPDATE `user_table` SET
`age` = '25',
`status` = 'active'
WHERE `id` = '1' AND `name` = '张三';
4. DELETE 语句
用途: 生成删除语句,根据条件删除数据
特点:
- 支持单行删除和批量删除
- 智能判断是否使用批量操作
- 自动处理空值条件
- 条件列数可配置
批量删除示例:
DELETE FROM `user_table` WHERE `id` IN ('1', '2', '3');
单行删除示例:
DELETE FROM `user_table` WHERE `id` = '1' AND `name` = '张三';
📊 Excel文件格式要求
基本要求
- 文件格式: .xls 或 .xlsx
- 编码: UTF-8(推荐)
- 数据位置: 第一行为表头,第二行开始为数据
表头要求
- 不能为空: 表头行不能为空
- 列名规范: 建议使用数据库字段名
- 特殊字符: 避免使用SQL关键字作为列名
数据要求
- 数据类型: 文本、数字、日期等
- 空值处理: 空单元格会被正确处理为NULL
- 数据量: 建议单次处理不超过10万行
示例Excel文件
user_id | username | age | status | created_at | |
---|---|---|---|---|---|
1 | zhangsan | zhangsan@example.com | 25 | active | 2024-01-01 |
2 | lisi | lisi@example.com | 30 | inactive | 2024-01-02 |
3 | wangwu | 28 | active | 2024-01-03 |
💡 使用示例
示例1:生成INSERT语句
Excel数据:
id | name | age | |
---|---|---|---|
1 | 张三 | 25 | zhangsan@example.com |
2 | 李四 | 30 | lisi@example.com |
3 | 王五 | 28 |
配置参数:
- 数据库表名:
users
- 语句类型:
INSERT
- 数据库库名:
test_db
生成的SQL:
-- ==========================================
-- Excel 转 SQL 工具
-- ==========================================
-- 生成时间: 2024-01-15 14:30:25
-- 表名: users
-- 数据行数: 3
-- 数据列数: 4
-- 条件列数(仅UPDATE/DELETE生效): 4
-- 数据类型: INSERT
-- 使用说明
-- 1. 执行前请备份数据库
-- 2. 仔细检查每个SQL语句的正确性
-- 3. 建议在测试环境中先验证SQL语句
-- ==========================================
INSERT INTO `test_db`.`users` (`id`, `name`, `age`, `email`) VALUES
('1', '张三', '25', 'zhangsan@example.com'),
('2', '李四', '30', 'lisi@example.com'),
('3', '王五', '28', NULL);
示例2:生成UPDATE语句
Excel数据:
id | name | status | age |
---|---|---|---|
1 | 张三 | active | 25 |
2 | 李四 | inactive | 30 |
配置参数:
- 数据库表名:
users
- 语句类型:
UPDATE
- 条件列数:
1
(使用id作为WHERE条件) - 数据库库名:
test_db
生成的SQL:
UPDATE `test_db`.`users` SET
`name` = '张三',
`status` = 'active',
`age` = '25'
WHERE `id` = '1';
UPDATE `test_db`.`users` SET
`name` = '李四',
`status` = 'inactive',
`age` = '30'
WHERE `id` = '2';
示例3:生成DELETE语句
Excel数据:
id | name |
---|---|
1 | 张三 |
2 | 李四 |
配置参数:
- 数据库表名:
users
- 语句类型:
DELETE
- 条件列数:
2
(使用id和name作为WHERE条件)
生成的SQL:
DELETE FROM `users` WHERE `id` = '1' AND `name` = '张三';
DELETE FROM `users` WHERE `id` = '2' AND `name` = '李四';
❓ 常见问题
Q1: 为什么生成的SQL语句有重复?
A: 系统会自动去重,如果仍有重复,可能是因为:
- Excel中有完全相同的行数据
- 这是正常的,重复数据在数据库中有意义
Q2: 空值是如何处理的?
A: 根据语句类型判断:
- SET子句: 空值生成
NULL
- WHERE子句: 空值生成
IS NULL
- INSERT: 空值生成
NULL
- SELECT: 空值使用
IS NULL
条件
Q3: 什么时候使用批量操作?
A: 系统会智能判断:
- UPDATE: 当 SET 值相同、WHERE 条件相同且无空值时
- DELETE: 当 WHERE 条件相同且无空值时
- INSERT: 始终使用批量插入
Q4: 条件列数是什么意思?
A: 意思是指定 Excel 前几列作为 WHERE 子句条件来使用
- 例如:条件列数为2,则使用前2列作为 WHERE 条件
- 仅对 UPDATE 和 DELETE 语句有效
Q5: 生成的SQL文件在哪里?
A: 默认保存在项目根目录的 output
文件夹,【主菜单->清除缓存】将清空该文件夹