你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Visual Studio Code 的 PostgreSQL 扩展提供了查询编辑器,支持 IntelliSense 智能补全、通过键盘执行查询、带导出选项的结果网格以及内置代码片段。 在标准 VS Code 编辑器选项卡中编写 SQL,并在不离开 IDE 的情况下针对任何连接的 PostgreSQL 服务器运行 SQL。
先决条件
- 已安装用于Visual Studio Code的 PostgreSQL 扩展。
- 与 PostgreSQL 服务器的活动连接。 有关设置步骤,请参阅 快速入门:连接和查询 PostgreSQL。
打开查询编辑器
可以通过多种方式打开新的查询编辑器:
- 在 “连接 ”树中,右键单击数据库节点并选择“ 新建查询”。
- 从命令面板(
PGSQL: New Query)运行。 - 打开或创建扩展名为
.sql的任何文件。
查询编辑器使用具有 SQL 语言模式的 VS Code 文本编辑器。 将编辑器连接到服务器时,扩展会激活 IntelliSense 并启用查询执行命令。
连接和断开连接
将查询编辑器与数据库连接相关联:
| Action | Windows/Linux | macOS |
|---|---|---|
| 连接 | Ctrl+Shift+C | Cmd+Shift+C |
| 断开连接 | Ctrl+Shift+D | Cmd+Shift+D |
你还可以通过命令面板运行 PGSQL: Connect 或 PGSQL: Disconnect。
更改数据库上下文
用于查询执行的活动数据库显示在 VS Code 状态栏中。 切换到其他数据库:
- 在状态栏中选择数据库名称,或从命令面板运行
PGSQL: Change PostgreSQL Database。 - 从选取器中选择目标数据库。
新的数据库上下文适用于该编辑器中的所有后续查询执行。
连接状态镜头
当 pgsql.showConnectionStatusLens 为 true (默认值)时,编辑器会在显示当前连接状态的文件顶部显示代码镜头。 选择该镜头以连接或更改数据库。
IntelliSense
当你在查询编辑器中键入 SQL 时,IntelliSense 会提供根据上下文的自动补全。 该扩展分析连接的数据库架构,以建议表、列、函数和关键字。
键入时 IntelliSense 会自动激活,或者可以使用 Ctrl+Space (macOS 上的 Cmd+Space )手动触发它。 可用的完成类型如下:
| 完成类型 | Description |
|---|---|
| 关键 字 | SQL 关键字,例如SELECT, FROMWHERE |
| 表/视图 | 当前数据库中的表和视图 |
| 列 | 查询中所引用表的列 |
| 功能 | 内置函数和用户定义的函数 |
| Schema | 数据库中的可用架构 |
| 添加建议 |
JOIN 基于外键关系的子句 |
在表引用后键入 JOIN 时,IntelliSense 会建议相关表,并根据外键关系填充联接条件。
设置 IntelliSense
使用 pgsql.intelliSense.enableIntelliSense 此设置启用或禁用 IntelliSense。 默认情况下,IntelliSense 处于启用状态。
刷新 IntelliSense 缓存
如果更改数据库架构(例如通过添加表或列),IntelliSense 不会反映这些更改,请刷新缓存:
- 打开命令面板 (Ctrl+Shift+P)。
- 运行
PGSQL: Refresh IntelliSense Cache。
在执行架构迁移、DDL 更改或在当前编辑器会话之外所做的更改之后,使用此命令。
运行查询
该扩展提供了多种针对已连接数据库运行 SQL 查询的方法。
执行查询
使用 执行 PostgreSQL 查询 在编辑器中运行 SQL。 如果选择特定文本,则仅运行所选文本。 如果未选择任何内容,编辑器的整个内容将运行。
| Action | Windows/Linux | macOS |
|---|---|---|
| 执行 PostgreSQL 查询 | Ctrl+Shift+E 或 Shift+Enter | Cmd+Shift+E 或 Shift+Enter |
| 执行当前 PostgreSQL 语句 | Ctrl+Shift+Enter | Ctrl+Shift+Enter |
执行 Current PostgreSQL 语句 仅在当前游标位置运行 SQL 语句。 在编辑器中有多个语句并且想要运行一个语句而不选择它时,请使用此命令。
取消查询
若要停止长时间运行的查询,请从命令面板运行 PGSQL: Cancel PostgreSQL Query 。 状态栏显示查询运行时的执行进度。
PostgreSQL 查询结果面板
运行查询后,结果将显示在编辑器下方的 PostgreSQL 查询结果 面板中。 面板最多包含三个选项卡,具体取决于查询类型。
“结果”选项卡
“ 结果 ”选项卡显示结果网格。 当查询返回多个结果集时,每个集将显示在选项卡内自己的网格中。
结果网格提供用于浏览数据的这些功能:
- 排序:右键单击列标题,然后选择 “升序排序 ”或“ 降序排序”。 选择 “清除排序 ”以删除排序。
- 筛选器:右键单击列标题,然后选择“ 显示筛选器 ”以缩小显示的行范围。
-
调整列大小:拖动列边框以调整宽度,或启用
pgsql.resultsGrid.autoSizeColumns(默认启用)以基于可见内容自动调整列大小。 - 行编号:行号显示在网格左侧。
- 搜索:使用结果工具栏中的搜索字段在网格中查找值。
联接的查询和更广泛的结果集使用相同的网格体验,因此可以在不离开编辑器的情况下对相关列进行排序、筛选和扫描。
复制数据
右键单击结果网格以访问复制选项:
| 选项 | Description |
|---|---|
| 全选 | 选择结果集中的所有行 |
| Copy | 将所选单元格复制到剪贴板 |
| 复制(含表头) | 复制所选单元格及其列标题 |
| 复制标头 | 仅复制列标题 |
还可以使用这些结果窗格键盘快捷方式(可通过 pgsql.shortcuts 设置进行配置):
| Action | 默认快捷方式 |
|---|---|
| 复制选择 | Ctrl+C |
| 全选 | Ctrl+A |
| 切换结果窗格 | Ctrl+Alt+R |
| 切换消息窗格 | Ctrl+Alt+Y |
| 焦点结果网格 | Ctrl+Alt+G |
| 上一个结果网格 | Ctrl+Up |
| 下一个结果网格 | Ctrl+Down |
Tip
将 pgsql.copyIncludeHeaders 设置为 true,以便在每次复制时包含列标题。 将 pgsql.copyRemoveNewLine 设置为 false,以保留复制的单元格中的换行符。
保存结果
通过在结果工具栏中选择保存按钮导出查询结果:
| Button | Format |
|---|---|
| 另存为 CSV | 逗号分隔值 (.csv) |
| 另存为 JSON | JavaScript 对象表示法 (.json) |
| 另存为Excel | Microsoft Excel工作簿(.xlsx) |
使用以下设置自定义 CSV 导出行为:
| 设置 | Description | 违约 |
|---|---|---|
pgsql.saveAsCsv.delimiter |
列分隔字符 | , |
pgsql.saveAsCsv.lineSeparator |
行分隔符 | 系统默认 |
pgsql.saveAsCsv.textIdentifier |
用于封闭文本字段的字符 | " |
pgsql.saveAsCsv.encoding |
文件编码 | utf-8 |
pgsql.saveAsCsv.includeHeaders |
包含列标题 | true |
在单独的选项卡中打开结果
对于大型结果集,请在专用编辑器选项卡中打开结果以获取更多空间。 在结果工具栏中选择“在新建选项卡中打开”,或在设置中设置为pgsql.openQueryResultsInTabByDefaulttrue始终在单独的选项卡中打开结果。
“消息”选项卡
“ 消息 ”选项卡显示查询执行信息,包括状态消息、行计数和执行时间。 每条消息都包含时间戳。
默认情况下,消息窗格与结果网格一起打开。 若要更改此行为,请设置为 pgsql.messagesDefaultOpenfalse.
Tip
将 pgsql.showBatchTime 设置为 true 以显示各个批次的执行时间。
“查询计划”选项卡
当您运行 EXPLAIN 或 EXPLAIN ANALYZE 查询时,会在 结果 和 消息 旁显示 查询计划 选项卡。 选择此选项卡可打开内置执行计划可视化工具,或选择 PostgreSQL 查询结果面板中的 “可视化查询计划 ”按钮。
还可以从命令面板运行 可视化查询计划(PostgreSQL), 以可视化当前查询的计划。
有关执行计划可视化工具的详细信息,请参阅 查询计划可视化工具。
Apache AGE 查询的图形视图
当查询从 Apache AGE 返回面向图形的结果时,扩展会检测 cypher() 函数调用和 Apache AGE 模式(agtype, ag_catalog)并在图形视图中打开结果批处理,而不是标准网格。
- 切换视图:在结果工具栏中选择“ 切换到图形 ”,以便从网格切换到图形视图,或 切换到表 以返回到网格。
- 检查元素:选择图形中的节点或边缘,在 “属性” 面板中查看其标签和属性。
- 导航:使用图形工具栏按钮: 放大、 缩小、 缩放以适应和 重置。
- 导出:在图形工具栏中选择“ 另存为 PNG ”以将图形导出为图像。
Note
如果查询不返回可绘制的数据,扩展将保留标准网格视图。
代码片段
该扩展包含内置 PostgreSQL 代码片段,可帮助搭建常见 SQL 模式的基架。 在编辑器中键入代码段前缀,然后按 Tab 展开代码片段。 在展开的代码片段中,按 Tab 键在各个占位符之间切换并填写相应的值。
可用代码片段
| 前缀 | Description |
|---|---|
pgCreateTable |
使用主键创建基本表 |
pgDropDatabase |
删除现有的 PostgreSQL 数据库 |
pgDropTable |
删除表格 |
pgInsertData |
在表中插入一行 |
pgSelectAll |
简单 SELECT *查询 |
pgUpdateRows |
更新表中的数据 |
pgDeleteRows |
从表中删除数据 |
pgCreateIndex |
在指定列上创建索引 |
pgCreateUser |
创建新角色或用户 |
pgGrantPrivileges |
向用户授予对表的权限 |
pgCTE |
Common Table Expression (CTE) 示例 |
pgLeftJoin |
LEFT JOIN 查询示例 |
pgExplainAnalyze |
EXPLAIN ANALYZE 查询性能详细信息 |
pgListTables |
列出特定架构中的所有表 |
Tip
在编辑器中键入 pg,然后浏览 IntelliSense 建议,以查看所有可用的代码片段。
查询历史记录
PostgreSQL 活动栏面板中的 “查询历史记录 ”视图会自动捕获运行的查询,以便以后可以重新访问和重复使用它们。
管理查询历史记录
| Action | 操作说明 |
|---|---|
| 打开查询 | 在 “查询历史记录 ”视图中选择一个条目,将其加载到新的编辑器中 |
| 运行查询 | 右键单击某个条目并选择“ 运行查询” |
| 复制查询 | 右键单击某个条目并选择“ 复制查询” |
| 删除条目 | 右键单击某个条目并选择“ 删除” |
| 全部清除 | 在视图工具栏中选择“ 清除所有查询历史记录 ”按钮 |
| 在命令面板中浏览 |
PGSQL: Open Query History in Command Palette运行 |
控件历史记录采集
使用 “查询历史记录 ”视图工具栏启动或暂停捕获:
- 启动查询历史记录捕获:恢复记录执行的查询。
- 暂停查询历史记录采集:停止记录。
使用以下设置配置历史记录行为:
| 设置 | Description | 违约 |
|---|---|---|
pgsql.enableQueryHistoryFeature |
启用查询历史记录功能 | true |
pgsql.enableQueryHistoryCapture |
自动捕获已执行的查询 | true |
pgsql.queryHistoryLimit |
存储历史记录条目的最大数目 | 20 |