SQL魔法棒 (SQL Text Magic)
一个强大的VSCode插件,专为Oracle数据库开发者设计,提供SQL语句和文本之间的智能转换功能。

🚀 核心功能
1. 字段提取器
快捷键: Ctrl+Alt+F
从Oracle建表语句中智能提取所有字段名,生成逗号分隔的字段列表。
输入示例:
CREATE TABLE users (
id NUMBER PRIMARY KEY,
name VARCHAR2(50) NOT NULL,
email VARCHAR2(100) UNIQUE,
created_date DATE DEFAULT SYSDATE
);
输出结果:
id,name,email,created_date
特性:
- ✅ 自动忽略约束、注释等无关内容
- ✅ 保留原始字段名大小写格式
- ✅ 处理多行字段定义和嵌套括号
- ✅ 支持带引号的字段名
2. 引号封装器
快捷键: Ctrl+Alt+Q
为逗号分隔的字符串自动添加单引号,生成标准SQL格式。
输入示例:
北京,上海,广州,深圳
输出结果:
'北京','上海','广州','深圳'
特性:
- ✅ 智能处理包含逗号的数据(如"New York, NY"不会被错误拆分)
- ✅ 自动转义内部单引号
- ✅ 支持已有引号的数据
3. 临时表生成器
快捷键: Ctrl+Alt+T
从结构化文本自动生成Oracle临时表的完整SQL语句。
输入示例:
小白 25 工程师
小黄 30 设计师
小红 28 产品经理
输出结果:
CREATE GLOBAL TEMPORARY TABLE temp_table (
col1 VARCHAR2(20),
col2 NUMBER,
col3 VARCHAR2(30)
);
INSERT INTO temp_table VALUES ('小白', 25, '工程师');
INSERT INTO temp_table VALUES ('小黄', 30, '设计师');
INSERT INTO temp_table VALUES ('小红', 28, '产品经理');
特性:
- ✅ 自动检测数据类型(字符串/数字/小数)
- ✅ 智能计算VARCHAR2长度
- ✅ 支持自定义表名
- ✅ 生成完整的CREATE和INSERT语句
4. 插入字段
快捷键: 暂无(通过右键菜单或命令面板使用)
为批量INSERT语句智能插入指定字段和对应值,支持自定义插入位置。
输入示例:
INSERT INTO users (id, name, email) VALUES (1, '张三', 'zhangsan@example.com');
INSERT INTO users (id, name, email) VALUES (2, '李四', 'lisi@example.com');
INSERT INTO users (id, name, email) VALUES (3, '王五', 'wangwu@example.com');
操作步骤:
- 选择要处理的INSERT语句
- 右键选择「插入字段」或通过命令面板调用
- 输入要插入的字段名(如:
status
)
- 输入字段值(如:
active
)
- 选择插入位置(如:第2个位置)
输出结果:
INSERT INTO users (id, status, name, email) VALUES (1, 'active', '张三', 'zhangsan@example.com');
INSERT INTO users (id, status, name, email) VALUES (2, 'active', '李四', 'lisi@example.com');
INSERT INTO users (id, status, name, email) VALUES (3, 'active', '王五', 'wangwu@example.com');
特性:
- ✅ 智能解析INSERT语句结构
- ✅ 支持自定义字段插入位置
- ✅ 自动识别数据类型并格式化
- ✅ 批量处理多条INSERT语句
- ✅ 保持原有语句格式和缩进
5. 格式化SQL
快捷键: Ctrl+Alt+S
对SQL语句进行智能格式化和美化,提升代码可读性。
输入示例:
select u.id,u.name,u.email,p.title,p.content from users u left join posts p on u.id=p.user_id where u.status='active' and p.created_at>'2023-01-01' order by p.created_at desc;
输出结果:
SELECT u.id,
u.name,
u.email,
p.title,
p.content
FROM users u
LEFT JOIN posts p
ON u.id = p.user_id
WHERE u.status = 'active'
AND p.created_at > '2023-01-01'
ORDER BY p.created_at DESC;
特性:
- ✅ 自动去除空行和多余空格
- ✅ SQL关键字自动大写
- ✅ 智能换行和缩进
- ✅ 保持字符串内容不变
- ✅ 支持复杂SQL语句(SELECT、INSERT、UPDATE、CREATE等)
- ✅ 条件语句自动缩进对齐
6. 生成表对比脚本
快捷键: Ctrl+Alt+C
根据建表语句生成两个数据库中同名表的数据对比脚本,使用MINUS操作进行精确对比。
输入示例:
CREATE TABLE users (
id NUMBER PRIMARY KEY,
username VARCHAR2(50) NOT NULL,
email VARCHAR2(100),
created_date DATE DEFAULT SYSDATE,
status NUMBER(1) DEFAULT 1
);
输出示例:
-- 表 users 数据对比脚本
-- 数据库A: @dblink_a
-- 数据库B: @dblink_b
-- 忽略字段: created_date
-- 查找在数据库A中存在但在数据库B中不存在的记录
SELECT '仅在数据库A中存在' AS diff_type,
id,
username,
email,
status
FROM users@dblink_a
MINUS
SELECT '仅在数据库A中存在' AS diff_type,
id,
username,
email,
status
FROM users@dblink_b
UNION ALL
-- 查找在数据库B中存在但在数据库A中不存在的记录
SELECT '仅在数据库B中存在' AS diff_type,
id,
username,
email,
status
FROM users@dblink_b
MINUS
SELECT '仅在数据库B中存在' AS diff_type,
id,
username,
email,
status
FROM users@dblink_a
ORDER BY diff_type, id;
特性:
- ✅ 自动提取表名和字段列表
- ✅ 支持在设置中预配置数据库标识(避免每次输入)
- ✅ 智能字段选择:自动识别常用忽略字段并提供多选列表
- ✅ 支持自定义忽略字段输入
- ✅ 生成双向对比脚本(A→B 和 B→A)
- ✅ 使用MINUS操作进行精确数据对比
- ✅ 自动添加差异类型标识
- ✅ 支持全局临时表
配置项:
sql-txt-magic.databaseA.identifier
: 数据库A的默认标识
sql-txt-magic.databaseB.identifier
: 数据库B的默认标识
sql-txt-magic.ignoreFields.common
: 常用忽略字段列表(如时间戳字段)
📖 使用方法
方法一:右键菜单
- 在编辑器中选择要处理的文本
- 右键打开上下文菜单
- 选择对应的SQL魔法棒功能
方法二:快捷键
Ctrl+Alt+F
- 字段提取器
Ctrl+Alt+Q
- 引号封装器
Ctrl+Alt+T
- 临时表生成器
- 插入字段功能暂无快捷键,请使用右键菜单或命令面板
方法三:命令面板
- 按
Ctrl+Shift+P
打开命令面板
- 输入 "SQL" 查找相关命令
- 选择要执行的功能
📋 安装方法
从VSCode市场安装
- 打开VSCode
- 点击左侧扩展图标(或按
Ctrl+Shift+X
)
- 搜索 "SQL魔法棒" 或 "sql-txt-magic"
- 点击安装
手动安装
- 下载
.vsix
文件
- 在VSCode中按
Ctrl+Shift+P
打开命令面板
- 输入 "Extensions: Install from VSIX"
- 选择下载的
.vsix
文件
📁 示例文件
项目中的 sql/
目录包含了各功能的详细示例文件:
sql/test-examples.sql
- 基础功能测试示例
sql/format-sql-examples.sql
- SQL格式化示例
sql/insert-field-examples.sql
- 插入字段功能示例
sql/compare-script-examples.sql
- 表对比脚本示例
💡 使用场景
数据库开发
- 快速从建表语句提取字段名用于SELECT语句
- 批量处理测试数据的引号格式化
- 从Excel复制的数据快速生成临时表
数据分析
- 处理CSV数据转换为SQL格式
- 生成测试用的临时数据表
- 快速格式化查询条件
🤝 贡献指南
欢迎提交Issue和Pull Request!
如果您想参与开发,请查看 DEVELOPMENT.md 获取详细的开发指南,包括环境设置、测试、打包和发布等信息。
快速开始
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature
)
- 提交更改 (
git commit -m 'Add some AmazingFeature'
)
- 推送到分支 (
git push origin feature/AmazingFeature
)
- 打开 Pull Request
📄 许可证
MIT License