SQLTools是VSCode中最稳定的数据库管理扩展,支持多数据库、JSON配置、自动驱动安装;需正确设置语言模式、连接参数(如authPlugin、ssl)和导出方式(命令面板导出完整结果)。

VSCode 本身不内置数据库管理功能,但通过扩展可以实现接近轻量级客户端的体验;关键不是“能不能”,而是“选哪个扩展、怎么配、哪些操作会卡住你”。
用什么扩展?SQLTools 是目前最稳的选择
别试 Database Client 或早期的 vscode-database,它们要么已停更,要么只支持单数据库类型且连接后频繁断连。SQLTools 支持 MySQL、PostgreSQL、SQLite、SQL Server、Oracle(需额外驱动),插件架构清晰,连接配置写在 JSON 里,方便复用和版本控制。
- 安装后必须重启 VSCode 才能加载驱动(尤其 PostgreSQL 需要
pg模块) - 首次连接时,如果提示
Driver not found,点右下角通知里的Install Driver,别手动 npm install —— 插件会自动装到用户数据目录 - 连接配置保存在
~/.sqltools/config.json(macOS/Linux)或%APPDATA%\Roaming\SQLTools\config.json(Windows),别硬塞进工作区.vscode/settings.json
SQLTools 怎么连 PostgreSQL / MySQL?注意端口和认证方式
MySQL 8+ 默认用 caching_sha2_password,而 SQLTools 默认驱动(mysql2)需要显式开启 ssl: false 或配置 authPlugin;PostgreSQL 若启用了 peer 或 scram-sha-256 认证,得在连接配置里填 "ssl": {"rejectUnauthorized": false} 或配好 pg_hba.conf。
- MySQL 连接示例片段:
{ "name": "prod-db", "driver": "MySQL", "host": "10.0.1.5", "port": 3306, "database": "app", "user": "reader", "password": "xxx", "options": { "authPlugin": "mysql_native_password" } } - PostgreSQL 要连本地 socket,
host别填localhost,改用/var/run/postgresql(Linux)或留空 + 填socketPath - 密码含特殊字符(如
@、/)必须 URL 编码,否则连接字符串解析失败
查询结果怎么导出?别依赖右键菜单
SQLTools 右键菜单里的 Export as CSV 经常导出为空或只导当前页,真正可靠的是命令面板操作:Ctrl+Shift+P → 输入 SQLTools: Export Results,它会导出完整结果集(非仅可视区域),并支持 CSV/JSON/Markdown 格式。
- 导出前先确认执行的是
SELECT—— 如果误执行了UPDATE或DELETE,结果面板是空的,但命令仍会生成空文件 - 大结果集(>10 万行)导出 JSON 会卡死,优先选 CSV;若需保留 NULL 值语义,CSV 中用
\N表示(需在设置里开"sqltools.export.csv.nullValue": "\\N") - 导出路径默认是当前打开文件夹,没打开文件夹时会存到系统临时目录,容易找不到
为什么写完 SQL 按 Ctrl+Enter 没反应?检查执行范围和语言模式
VSCode 不会自动识别 .sql 文件为 SQL 语言,必须手动设语言模式(右下角点击“Plain Text” → 选“SQL”),否则 Ctrl+Enter 触发的是普通编辑操作,不是 SQLTools 的执行命令。
- 即使文件后缀是
.sql,新开未保存文件默认仍是Plain Text - 多语句执行时,光标必须落在某条语句内,不能在空行或注释行;选中部分文本再按
Ctrl+Enter,只会执行选中部分(这点和 DBeaver 不同) - 如果设置了自定义快捷键(比如映射成
F5),记得在keybindings.json中限定when条件为editorTextFocus && editorLangId == 'sql',否则在 JSON 文件里按也会触发
真正麻烦的从来不是连上数据库,而是连接后的上下文隔离:VSCode 里没有“当前 schema”概念,每次 SELECT * FROM users 都可能因没指定 schema 报错;SQLTools 也不支持像 pgAdmin 那样双击表名跳转结构定义——这些地方,还是得切出去查文档或开另一个终端。










