在 DataGrip 中使用 AI Assistant
AI Assistant 提供 AI 驱动的软件开发功能。 有关 AI Assistant 的更多信息,请参阅 快速入门 主题。
在本教程中,我们将学习如何使用 AI Assistant 执行以下任务:
创建数据聚合器与提取器
如果您需要自定义数据聚合器或提取器,您可以请求 AI Assistant 为您的任务创建一个聚合器或提取器,然后将生成的脚本添加到 聚合器 或 提取器 目录中。
为 LLM 提供一个可用脚本的示例可能会减少提示与更正的次数。 在 AI Assistant 中,您可以在 Project 工具窗口 Alt+1 的 Scratches and Consoles | 扩展 | 数据库工具和 SQL | 数据 下找到捆绑的脚本。
有关聚合器和提取器的更多信息,请参阅 https://www.jetbrains.com/zh-cn/help/datagrip/tables-view-data.html#aggregate-view 和 https://www.jetbrains.com/zh-cn/help/datagrip/data-extractors.html。
在本教程中,我们将创建一个聚合器,并使用以下 AVG.groovy 聚合器作为示例:
在 AI Assistant 中,您可以在 Project 工具窗口的 Scratches and Consoles | 扩展 | 数据库工具和 SQL | 数据 | 聚合器 下找到此脚本。
步骤 1。 步骤 1:请求脚本
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在输入字段中输入提示。 描述所需的脚本,并向 LLM 提供一个可用脚本的示例。
在生成脚本的字段右上角,点击
复制到剪贴板 以将代码复制到剪贴板。
生成的脚本:

步骤 2。 步骤 2:将脚本保存为文件
您可以通过以下任一方式打开 Project 工具窗口:
在主菜单中,进入 .
按下 Alt+1。
请导航至 Scratches and Consoles | 扩展 | 数据库工具和 SQL | 数据 | 聚合器 。
右键点击 聚合器 节点并选择 。
在 新建文件 弹出窗口中,输入新文件名。 例如, most_frequent_values.groovy 。
将您的新数据聚合器脚本粘贴到文件中。
(可选)如果出现 转换粘贴的代码 对话框,请按 取消。 在本教程中,我们保存生成的脚本本身。
新的数据聚合器会出现在数据编辑器的 状态栏 的聚合器列表中,并可与您的数据一起使用。

使用自然语言请求查询与信息
AI Assistant 可以为您的架构提供洞察,也可以根据自然语言请求为架构生成 SQL 查询。 访问您的架构后,它将分析结构并为您提供请求的查询或信息。
为了演示目的,我们将使用导入到 ai_demo 数据库中的 PostgreSQL Sakila 架构。 您可以通过克隆 dumps 仓库获取转储文件。
有关克隆仓库的更多信息,请参阅 https://www.jetbrains.com/zh-cn/help/datagrip/set-up-a-git-repository.html。 有关在 AI Assistant 中运行转储文件的更多信息,请参阅 https://www.jetbrains.com/zh-cn/help/datagrip/import-sql-dump-files.html。
步骤 1。 步骤 1:附加您的架构
为了授予 LLM 访问您的数据库架构的权限,请在 AI Assistant 工具窗口中将架构附加到聊天。
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在 AI Assistant 工具窗口中,点击输入字段上方的
附加模式 ,然后选择您想附加的架构。 在本例中,它是
ai_demo.public。如果出现 附加模式 对话框,请点击 Attach 以附加架构。

步骤 2。 步骤 2:在聊天中提问
使用 EXPLAIN PLAN 优化架构与查询
AI Assistant 可以通过使用 EXPLAIN PLAN 命令帮助您优化架构与查询。 访问您的架构后,它可以分析方案并建议优化内容。
为了演示目的,我们将使用导入到 ai_demo 数据库中的 PostgreSQL Sakila 架构。 您可以通过克隆 dumps 仓库获取转储文件。
有关克隆仓库的更多信息,请参阅 https://www.jetbrains.com/zh-cn/help/datagrip/set-up-a-git-repository.html。 有关在 AI Assistant 中运行转储文件的更多信息,请参阅 https://www.jetbrains.com/zh-cn/help/datagrip/import-sql-dump-files.html。
在本教程中,我们将使用以下查询:
步骤 1。 步骤 1:运行 EXPLAIN PLAN 命令
获取并复制您希望 AI Assistant 分析的 EXPLAIN PLAN。
在 查询控制台 中,右键点击您的查询并导航至 。
在结果选项卡中,按 Ctrl+A 和 Ctrl+C 将结果复制到剪贴板。
有关 EXPLAIN PLAN 命令的更多信息,请参阅 https://www.jetbrains.com/zh-cn/help/datagrip/query-execution-plan.html。
EXPLAIN PLAN 用于原始查询:

步骤 2。 步骤 1:附加您的架构
为了授予 LLM 访问您的数据库架构的权限,请在 AI Assistant 工具窗口中将架构附加到聊天。
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在 AI Assistant 工具窗口中,点击输入字段上方的
附加模式 ,然后选择您想附加的架构。 在本例中,它是
ai_demo.public。如果出现 附加模式 对话框,请点击 Attach 以附加架构。

步骤 3。 步骤 3:请求优化建议与命令
请求 AI Assistant 分析您的查询的 EXPLAIN PLAN 并提出可能的优化建议。
步骤 4。 步骤 4:运行建议的 CREATE INDEX 命令
选择命令,并通过点击工具栏上的
执行 或按下 Ctrl+Enter 来运行。
建议的命令:
IDE 将创建已定义的数据库对象,您可以在 输出 标签页的 Services 工具窗口中查看输出。

步骤 5。 步骤 5:为优化后的架构与查询运行 EXPLAIN PLAN
在生成的
CREATE INDEX命令字段的右上角,点击在插入符号处插入代码片段 ,将代码插入到 查询控制台 中。
建议的优化查询:
SELECT customer.first_name, customer.last_name, comedic_category.name FROM customer INNER JOIN rental ON customer.customer_id = rental.customer_id INNER JOIN inventory ON rental.inventory_id = inventory.inventory_id INNER JOIN film_category ON inventory.film_id = film_category.film_id INNER JOIN ( SELECT * FROM category WHERE category.name = 'Comedy' ) AS comedic_category ON film_category.category_id = comedic_category.category_id;优化查询的
EXPLAIN PLAN:Hash Join (cost=27.80..236.36 rows=1003 width=81) Hash Cond: (rental.customer_id = customer.customer_id) -> Nested Loop (cost=5.32..211.23 rows=1003 width=70) -> Nested Loop (cost=5.04..49.31 rows=286 width=72) -> Nested Loop (cost=4.76..13.35 rows=62 width=70) -> Seq Scan on category (cost=0.00..1.20 rows=1 width=72) Filter: ((name)::text = 'Comedy'::text) -> Bitmap Heap Scan on film_category (cost=4.76..11.53 rows=62 width=4) Recheck Cond: (category_id = category.category_id) -> Bitmap Index Scan on idx_film_category_category_id (cost=0.00..4.74 rows=62 width=0) Index Cond: (category_id = category.category_id) -> Index Scan using idx_inventory_film_id on inventory (cost=0.28..0.53 rows=5 width=6) Index Cond: (film_id = film_category.film_id) -> Index Scan using idx_rental_inventory_id on rental (cost=0.29..0.53 rows=4 width=6) Index Cond: (inventory_id = inventory.inventory_id) -> Hash (cost=14.99..14.99 rows=599 width=17) -> Seq Scan on customer (cost=0.00..14.99 rows=599 width=17)

比较两个数据库对象的 DDL
在获得对您的数据库架构的访问权限后,AI Assistant 可以分析其内容并比较数据库对象的 DDL。
让我们比较 actor 和 actor_test 表,它们位于 testing.public 架构中。

步骤 1。 步骤 1:附加您的架构
为了授予 LLM 访问您的数据库架构的权限,请在 AI Assistant 工具窗口中将架构附加到聊天。
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在 AI Assistant 工具窗口中,点击输入字段上方的
附加模式 ,然后选择您想附加的架构。 在本例中,它是
ai_demo.public。如果出现 附加模式 对话框,请点击 Attach 以附加架构。

步骤 2。 步骤 2:比较表的 DDL
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在输入字段中,输入您的提示并按下 Enter。
AI Assistant 将比较 DDL 并解释差异。

修复代码错误
如果某些代码无法运行,您可以请求 AI Assistant 检查其中是否存在错误并进行修复。
我们将使用以下包含错误的代码作为示例:
此处的错误是,声明的函数有一个输出参数 p_film_count ,但 SQL 主体未计算或返回该参数。 此外,该函数声明为返回 SETOF integer ,但实际上仅从 SELECT 语句中返回结果。
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在输入字段中,输入您的提示、粘贴代码、请求代码修复,然后按下 Enter。
如有必要,请在下一个提示中添加修复内容。
修正后的代码:

将代码从一个 DBMS 迁移到另一个
将数据库对象从一个 DBMS 迁移到另一个是一个复杂任务,涉及数据迁移、架构转换等多个步骤。 您可以请求 AI Assistant 为数据库对象的源代码生成迁移脚本。
我们将使用 PostgreSQL Sakila 架构中的以下 inventory_held_by_customer 过程作为示例:
为了让 AI Assistant 迁移您的代码,请在提示中提供迁移的详细信息。
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在输入字段中输入提示。 在输入字段中,输入您的提示。定义原始 DBMS 和目标 DBMS,粘贴您要迁移的数据库对象的 DDL,然后按下 Enter。
如有必要,请在下一个提示中添加修复内容。
生成的迁移脚本:

格式化代码
读取没有缩进、换行或统一大小写的代码会很困难。 为了使这些代码更易于阅读,请使用 AI Assistant 依据您的代码样式偏好对其进行格式设置。
我们将使用以下格式混乱的 SQL 代码作为示例:
为了让 AI Assistant 格式化您的代码,请在提示中描述您的格式化规则偏好。
在工具栏中,点击
More tool windows ,然后选择
AI Assistant 以打开 AI Assistant 工具窗口。
在输入字段中,输入包含格式化规则的提示,粘贴要格式化的代码,然后按下 Enter。
如有必要,请在下一个提示中添加修复内容。
格式化后的代码:





