跨数据库查询期},{
启用 数据库工具和 SQL 插件
此功能依赖于 数据库工具和 SQL 插件,该插件默认情况下已捆绑并在 GoLand 中启用。 如果相关功能不可用,请确保您未禁用该插件。
按下 Ctrl+Alt+S 打开设置,然后选择 。
找到 数据库工具和 SQL 插件并点击 启用。
在 GoLand 中,可以跨不同数据库查询数据并直接查看结果,而无需事先复制数据。 IDE 提供一个专用的 工作区 数据源,作为 GoLand 与所查询数据库之间的中介。 使用其 查询控制台s 控制台编写并执行 SQL 查询,并借助 Ctrl+Space 代码补全和 特殊语法。
工作区数据源
工作区 数据源基于 DuckDB ,默认创建内存中的 DuckDB 数据库。 每个项目可以有一个 工作区 数据源,并可根据需要拥有任意数量的 查询控制台s 控制台。

创建工作区数据源
在 数据库 工具窗口工具栏上,点击
添加 ,然后选择
工作区数据源。
GoLand 会将该数据源添加到 数据库 工具窗口中的列表,并自动打开其默认 查询控制台。

语法
在 工作区 数据源 查询控制台 中,可以使用以下语法引用其他数据源中的表:
要直接引用表,请指定其数据源和表的名称。 需要时添加数据库和架构:
#data_source[.database.schema].table要为表添加筛选器,请将
#filter(...)添加到引用中:#data_source[.database.schema].table.#filter('condition')也可以使用
#query(...)对数据源运行查询:#data_source[.database.schema].#query('query')
在 #filter(...) 和 #query(...) 中,可以使用 $$...$$ 美元引用字符串代替单引号: #filter($$condition$$) 和 #query($$query$$)。
输入 # 以使用代码补全选择数据源。

示例
以下是将该语法用于 PostgreSQL 和 MySQL 数据源及其各自 Sakila 数据库的几个示例:
为引用表中的行添加筛选器:
SELECT * FROM #PostgreSQL.guest.public.customer.#filter('customer_id > 100');
对引用的数据源运行查询:
SELECT * FROM #PostgreSQL.guest.public.#query($$ SELECT customer_id, amount FROM payment WHERE amount > 5 $$);
联接来自 PostgreSQL 和 MySQL 数据源的数据:
SELECT c.first_name, c.last_name, p.amount FROM #PostgreSQL.guest.public.customer c JOIN #MySQL.sakila.payment p ON c.customer_id = p.customer_id;