DataGrip 2021.1 最新变化

今天我们要介绍的是 DataGrip 2021.1,这是我们今年的第一个主要版本,也可能是我们 IDE 历史上最了不起的版本。 我们希望 v2021.1 能够为您解决至少一个痛点,也希望它可以给您带来心仪的新功能。 我们来深入了解一下!

授权 UI

这适用于 PostgreSQL、Redshift、Greenplum、MySQL、MariaDB、DB2、SQL Server 和 Sybase。

我们为修改对象时的授权编辑添加了一个 UI。

您可以使用 Ctrl+F6 在数据库资源管理器中的用户上调用 Modify user 窗口,该窗口现在具有向对象添加授权的 UI:

上下文实时模板

缩减选择

这是我们为从数据库资源管理器直接生成简单语句打造的全面解决方案。 常规实时模板涵盖了许多需要快速编写简单查询的情况。 但是我们也明白,有时,当您在数据库资源管理器的上下文中已经找到需要的对象,还有一个更好的方法可以使用这个对象得到简单查询。

当然,还有许多工具同样采用这种机制来减少重复工作,这也让许多用户对此习以为常。

这段简短视频展示了它的工作原理:

此列表中的每个代码段实际上都是一个实时模板,但它们都很特殊,可以在所选对象的上下文中生成。 例如 Select first N rows from a table 模板。

打开实时模板设置页面,找到需要的模板:

Select first N rows from a table 看起来像是常规模板(也确实可以这样使用)。 由于这一特定语法不能用于所有数据库,所以模板设置了相应方言。 此模板之所以适用于数据库资源管理器,主要是因为特殊表达式 dbObjectName,其用于 $table$ 变量:

当然,您也可以添加自己的模板或编辑现有的模板。

Settings/Preferences | Database | General 中,选择要将脚本生成到当前控制台还是新控制台。

数据编辑器

编辑 MongoDB 中的数据

我们为 MongoDB 添加了一项重要功能:从这个版本开始,您可以编辑 MongoDB 集合中的数据。 还有语句预览可供使用。

 

为了使编辑更加灵活,我们引入了从 UI 更改字段类型的功能。 可以从字段的上下文菜单或值编辑器中完成此操作:

更好的排序

我们改进了数据排序:

  • 新的 ORDER BY 字段的工作原理类似于 WHERE 字段(之前叫做 Filter):输入工作子句将其应用于网格查询。
  • 排序默认不“堆叠”。 点击要用于数据排序的列名后,基于其他列的排序将被清除。 如果您想使用堆叠排序,按住 Alt 键的同时点击列名。

如果要在客户端使用排序(这意味着 DataGrip 不会重新运行查询,而会在当前页面对数据进行排序),应取消选中 Sort via ORDER BY

也可以根据数字主键打开预定义排序的表。 此设置位于 Settings/Preferences | Database | Data Views

新工具栏

我们重新设计了数据编辑器中的工具栏。 在自动事务模式下,Roll-backCommit 按钮不再显示,新增 Revert changesFind 两个按钮。

转置单行结果

Settings/Preferences | Database | Data Views 中现在有一个选项可以始终转置结果(如果结果为单行)。

导航

简单明了的操作

我们简化了导航,并取消了以下设置:

缩减选择

如果您从未更改过这些设置并默认选中了复选框,则 2021.1 的主要改动如下:Go to declaration (Ctrl/Cmd+B) 调用 SQL 中的一个对象,现在会转到 DDL,而不是数据库树

我们还为 Select in database tree 操作引入了快捷键:Windows/Linux 为 Alt+Shift+B,macOS 为 Opt+Shift+B

此更改的主要原因是使逻辑更直观:每个操作都应将您带到期望的位置。

现在,如果您把光标放在一个对象上:

  • Ctrl/Cmd+B 显示 DDL。
  • F4 显示数据。
  • Alt/Opt+Shift+B 高亮显示数据库树中的对象。

我们明白有些习惯可能会因此而被破坏,因此提供了帮助您继续运用过去经验的方法。 提示:

  • 了解按键映射的功能。 如果您想使用 Ctrl/Cmd+B 打开数据库资源管理器,只需重新映射 Select in database tree 的快捷键。
  • 如果您喜欢在 SQL 中使用的对象尚未创建时通过 Ctrl/Cmd+BCtrl/Cmd+Click 打开 CREATE definition,那么在上一条提示的重新映射后无需从 Go to declaration 移除快捷键。
  • 如果您使用取消选中的 Prefer data editor over DDL editor 设置并喜欢双击打开 DDL,可更改注册表键的值调回此操作:database.legacy.navigate.to.code.from.tree。 根据我们的数据,很少有用户使用此流程。 我们也推荐使用快捷键打开对象的 DDL。

如果这个新流程存在未覆盖的用例,请告知我们。

连接性

Azure MFA 支持

支持 Azure Active Directory 交互式身份验证。 启用后,浏览器将自动打开并允许您登录。

Redshift 驱动程序 2.x

Redshift 2.x JDBC 驱动程序从这个版本开始可供 DataGrip 用户使用。 这里的主要增强是取消查询

Google BigQuery 全面支持

上一个版本增加了对 Google BigQuery 方言的支持。 我们在这个版本中对其进行了扩展,使数据库内省和代码生成可以正常运作,不再依赖于 JDBC 驱动程序的功能。

CockroachDB 方言支持

现在,如果您使用 CockroachDB 脚本或编写 SQL 查询该数据库,您的代码将正确高亮显示,并且能够在运行查询之前显示所有错误。 这是支持 CockroachDB 的第一步,全面的支持将在未来版本中实现。

连接窗口的改进

我们重新设计了连接窗口,使其更加友好。

  • 驱动程序和数据源现在列于两个不同的标签页上。 驱动程序列表不应该扰乱有经验的用户,也不应该让新手将其与数据源混淆。
  • 每一个驱动器页面都具有 Create data source 按钮。
  • Test Connection 按钮已移至页脚,让您可以从数据源属性的任何标签页使用它,而不仅仅是先前从 General and SSH/SSL 标签页使用。
  • DDL 数据源属性页面具有用于选择方言的下拉列表。

URL 字段现在可扩展,使长 URL 更易于处理。

数据库资源管理器

缩减选择

轻松复制粘贴数据源

复制和粘贴数据源的功能很早以前就已引入。 但从 2021.1 开始,您可以使用闻名世界的快捷键来复制、剪切和粘贴数据源:Ctrl/Cmd+C/V/X

  • 复制数据源时,XML 会被复制到剪贴板,然后可以通过通讯工具共享。 您也可以使用 Paste 操作从其他位置粘贴 XML。
  • 如果您在项目中剪切并粘贴数据源,它会被直接移动,无需密码。 但在其他情况下都需要密码。
  • Cut 可由 Ctrl/Cmd+Z 撤销。

新布局

数据库资源管理器的默认布局已更改,非主要对象现在可以在专用节点下使用。 大多数时候,人们使用的是表格、视图和例程,而不会优先考虑用户、角色、表空间、外部数据包装器和其他类型的对象。 因此,这些二级对象现在隐藏在两个节点下:Server ObjectsDatabase Objects

 

要恢复以前的布局,只需在齿轮图标下的设置中选择 Group Database and Schemas

隐藏自动生成的对象 Oracle

如果使用的是 Oracle,有一个选项可以在树中显示或隐藏自动生成的对象,包括:

  • 具体化视图日志
  • 具体化视图的基础表格
  • 二级表格

新类型对象 SQLite

为 SQLite 内省了函数、模块和虚拟列。

针对不支持的数据库的改进

数据源模板

从 2021.1 开始,不支持的数据库更易添加数据源。 我们现在为 AWS Athena、Informix、Presto、SAP HANA、Google Cloud Spanner 以及其他多种服务提供了 JDBC 驱动程序。 在数据库列表的 Other 部分可以找到这些数据库。

还有一些其他改进:

  • 您不再需要自己下载驱动程序并在其基础上手动创建数据源。
  • 新版本的驱动程序将由 DataGrip 提供。
  • 一些新数据库具有自己的专用图标。

请注意,对这些数据库的支持仍然有限。 这主要依赖 JDBC 驱动程序的功能和 DataGrip 的 SQL 编辑器的 SQL:2016 方言支持。

查询解析

我们为不受支持的数据库引入了一项新设置。 在 DataGrip 中使用这些数据库时,您需要使用 SQL:2016Generic 方言。 GenericSQL:2016 几乎相同,唯一的区别是:DataGrip 不会高亮显示任何其发现的错误。

要访问此设置,请转到 Settings/Preferences | Database | General | Split a script for execution in Generic and ANSI SQL dialects。 以下值可供选择:

  • On valid ANSI SQL statements or by separator – 这是适用于大多数情况的默认设置。 同时,我们会尽力了解您要运行的内容。
  • On ANSI SQL Statements – 和以前一样的分割语句。 逻辑仅基于 DataGrip 认为受 SQL:2016 语法支持的内容。
  • By statement separator – 通过分隔符提取和运行语句。 可在第一个选项未能完成任务时使用。 GenericSQL 的分隔符是分号。 请注意,现在已经不能设置自定义分隔符。

以下是我们解决的一些问题:

  • 许多用户反映在运行 CTE 时出现问题。 当 Generic 语法从 SQL:92 升级到 SQL:2016 时,这种情况应该可以部分缓解,同时 On valid ANSI SQL statements or by separator 选项仍然有助于处理复杂的 CTE。 另一个可以与该选项一起使用的语句示例是异常的 MERGE 语句。
  • On valid ANSI SQL statements or by separator 选项还有助于运行 SQL:2016 语法中的非语句内容,例如 show databases

编码辅助

使用 CTE 时列名不明确

报告不明确列名的检查变得更加智能,现在会考虑到通用表表达式中的所有列:

系统函数可非限定使用 SQL Server

系统函数和过程在非限定使用时不再高亮显示为错误。 导航和补全现在也适用。

JSON Lines 支持

Thanks to the IntelliJ Platform, DataGrip now has support for the newline-delimited JSON Lines format used for working with structured data and logs. IDE 将识别 .jsonl.jslines.ldjson.ndjson 文件类型。

可调整字体粗细

新的版式设置可帮助您微调字体样式。 在 v2021.1 中,您可以在 Settings/Preferences | Editor | Fonts 中调整主字体和粗体字体的粗细。

导入/导出

关于未加载数据的警告

复制尚未完全加载的二进制数据时,将显示以下通知:

如果您不希望数据被截断,请在 Settings/Preferences | Database | Data Views | Maximum number of bytes loaded per value 中增加值。

在 Excel 文件中包含查询

导出到 Excel 时,生成的文件将在单独的工作表中包含查询。

上下文菜单中的 First row is header

导入 CSV 文件时,现在可以在上下文菜单中选择澄清第一行是标题,如下所示:

用户界面

缩减选择

通过拖放来附加文件夹

现在可以通过拖放将文件夹附加到项目。

缩减选择

最大化分割视图中的标签页

打开多个垂直拆分编辑器的标签页时,您可以双击并最大化各个标签页的编辑器窗口。 只需再次双击即可将窗口恢复到原始大小。

标签页标题中的长名称

前段时间我们引入了缩短的标签页名称。 由于未能让所有人满意,因此新增设置给您更多选择。