Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>sql魔法棒New to Visual Studio Code? Get it now.
sql魔法棒

sql魔法棒

夏叶

|
3 installs
| (0) | Free
处理sql与文本之间的转换
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

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');

操作步骤:

  1. 选择要处理的INSERT语句
  2. 右键选择「插入字段」或通过命令面板调用
  3. 输入要插入的字段名(如:status)
  4. 输入字段值(如:active)
  5. 选择插入位置(如:第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: 常用忽略字段列表(如时间戳字段)

📖 使用方法

方法一:右键菜单

  1. 在编辑器中选择要处理的文本
  2. 右键打开上下文菜单
  3. 选择对应的SQL魔法棒功能

方法二:快捷键

  • Ctrl+Alt+F - 字段提取器
  • Ctrl+Alt+Q - 引号封装器
  • Ctrl+Alt+T - 临时表生成器
  • 插入字段功能暂无快捷键,请使用右键菜单或命令面板

方法三:命令面板

  1. 按 Ctrl+Shift+P 打开命令面板
  2. 输入 "SQL" 查找相关命令
  3. 选择要执行的功能

📋 安装方法

从VSCode市场安装

  1. 打开VSCode
  2. 点击左侧扩展图标(或按 Ctrl+Shift+X)
  3. 搜索 "SQL魔法棒" 或 "sql-txt-magic"
  4. 点击安装

手动安装

  1. 下载 .vsix 文件
  2. 在VSCode中按 Ctrl+Shift+P 打开命令面板
  3. 输入 "Extensions: Install from VSIX"
  4. 选择下载的 .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 获取详细的开发指南,包括环境设置、测试、打包和发布等信息。

快速开始

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

MIT License

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft