全部文章
发布于 2026-07-19

技能与应用导入导出:预定义查询如何跟着走

把技能或应用拷到另一个工作区时,预定义查询怎么跟着走、怎么补齐。

来源 docs/技术博客/技能应用导入导出与预定义查询.md

表述:本文面向 工作区管理员,说明把技能或应用拷到另一个工作区时,预定义查询会怎样处理、导入时如何一键补齐,以及目标库表结构不一致时要注意什么。日常成员只需会用技能/应用;不必了解 zip 里的文件名。实现对照见文末。

日期:2026-07-19 状态:已实现 关联帮助工作区应用 · 数据连接与预定义查询 · 怎么写好工作区技能 机制说明工作区应用


结论(先看这个)

问题答案
导出技能/应用会带走数据库账号吗?不会
会带走预定义查询的 SQL 吗?会尽量带走(写入包内依赖清单,不含连接密钥)
导入时缺查询会怎样?技能/应用仍可导入;取数会失败,除非补齐查询
管理员能一键补齐吗?:导入时可选择写入本工作区某条数据连接
目标库表名不同怎么办?先写入,再用「智能检查校正」或实测改 SQL

一句话:界面与逻辑走技能/应用包;怎么查数走数据连接上的预定义查询;迁移时把「查询定义」作为依赖一并带上,导入时可选合并。


1. 为什么以前会「迁过去不能用」

技能和应用 不存业务库连接,只按 查询 id 去调工作区里的数据连接,例如:

  • 技能正文写「调用预定义查询 staff_by_dept
  • 员工画像 pipeline 写死 employee_by_name
  • 报表应用脚本里 platform.query_run("dept_rank_emp", …)

导出包原先主要带走:

  • 技能:说明文档、脚本、参考材料
  • 应用:界面描述与逻辑(不含已登记的业务数据)

预定义查询 挂在「数据集成 → 数据连接」上,不在包里。目标工作区若没有同名查询(或没有对应数据连接),导入本身往往成功,但一查数就报「未找到查询定义」,或对话里临场猜别的 id、用表预览冒充正式结果。


2. 现在的做法:依赖清单跟着包走

2.1 导出时自动收集

导出技能包或应用包时,系统会:

  1. 扫描包内材料中用到的查询 id(流水线、脚本、正文说明等)
  2. 当前工作区 的数据连接里解析出对应定义(名称、说明、SQL、参数)
  3. 写入包内依赖文件(不含主机、账号、密码)

若源工作区本身也没有这些查询的完整定义,包里就带不齐 SQL——迁移前请先在源侧把常用查询配置好再导出。

2.2 导入时缺口检查 + 可选写入

导入预览会对照目标工作区,给出大致状态:

状态含义
已就绪某条数据连接上已有同名且内容一致的查询
缺失包里有定义,目标还没有
冲突同名存在,但 SQL/参数与包内不同

确认导入后,若有缺失(或冲突),工作区管理员 会被询问:

  • 是否写入本工作区的某条 数据连接
  • 同名冲突时:保留已有,或用包内定义覆盖

也可以选「仅导入,不写入」——技能/应用照常落地,之后再到「数据集成」手工补查询。

非管理员可以导入包,但不能把查询写入数据连接;界面会提示请管理员处理。


3. 操作步骤(管理员)

3.1 从源工作区导出

类型怎么做
应用打开应用 → 导出应用包 → 得到 zip
技能技能中心打开技能 → 导出(标准或完整均可;依赖查询两种模式都会尽量附带)

导出后仍 不包含 原工作区已登记的业务表数据,也不包含数据库连接密钥。

3.2 在目标工作区准备数据连接

写入预定义查询之前,目标工作区需要:

  1. 已开通 数据集成,并配置好可用的 MySQL(等)数据连接
  2. 库里有业务表(或至少允许后续改 SQL 对齐)
  3. 导入操作者具备 工作区管理员 身份(若要一键写入查询)

3.3 导入并写入缺失查询

  1. 导入技能包或应用包,按提示处理「标识符已存在」(覆盖 / 复制)
  2. 若提示有预定义查询依赖:选择要写入的数据连接,确认「写入并继续导入」
  3. 数据集成 → 该数据连接 核对查询列表
  4. 用真实业务场景跑一遍(对话 @ 技能,或点应用按钮)

3.4 同名冲突怎么选

选择适用
保留已有(默认)目标侧查询已调通,不想被源环境覆盖
覆盖同名要以源包口径为准,统一 SQL 与参数名

4. 目标库与源库不一致时

依赖清单解决的是「有没有同名查询」,不能保证 SQL 在目标库一定能跑通。常见差异:

  • 表名、列名不同(如 empId vs emp_id
  • 允许表范围更窄,写入时校验不通过
  • 参数名与脚本/技能里写的不一致

建议:

  1. 先完成导入并写入缺失查询
  2. 对关键连接执行 智能检查校正(见 预定义查询智能检查校正机制解析
  3. 用固定样例参数对各查询 id 做一次执行验证
  4. 员工画像类固定流水线,还可对照 员工画像 Pipeline 与数据连接对齐指南

5. 和「生成技能 / 对话写入查询」的关系

场景做法
本工作区新配连接数据连接保存后可 生成技能;或对话里管理员写入查询
跨工作区拷技能/应用用本文的 导出依赖 + 导入合并
画像 pipeline 缺规范 id仍可用对话一键写入模板查询(见画像对齐指南)

三者互补:日常配置靠表单/对话;整包迁移靠导入导出依赖合并。


6. 成员侧会看到什么

  • 导入成功、查询已写入:与原先一样使用技能或应用即可
  • 只导入了包、没写查询:点报表/画像等取数动作可能失败;对话里可能提示未找到查询——请管理员补齐
  • 没有数据连接:无法写入查询;需先配连接再导入一次(或手工粘贴查询定义)

7. 检查清单(迁移前)

  • [ ] 源工作区:技能/应用依赖的查询已在数据连接中配置并可执行
  • [ ] 导出得到 zip(应用或技能)
  • [ ] 目标工作区:数据连接已通,表结构大致可用
  • [ ] 管理员执行导入,并对缺失项选择写入
  • [ ] 冲突项已按口径选择保留或覆盖
  • [ ] 抽样验证对话取数或应用按钮
  • [ ] 表结构有差异时已做智能检查或手工改 SQL

实现对照(给开发 / 排障)

能力位置
收集查询 id、打包/解析依赖backend/internal/querydepbundle/
应用导出注入 / 导入合并backend/internal/api/handlers/workspace_apps_import.go
技能导出注入 / 导入合并backend/internal/api/handlers/skills_import.go
合并进数据连接store.MergeImportQueryDefsskip / replace
包内依赖文件references/query-defs.json(格式 mindlink-query-deps
导入表单字段merge_query_defsdata_source_slugon_query_conflict
Web 确认流程client/web/src/importQueryDeps.ts;应用/技能导入页调用

预览响应中的 query_deps 含就绪/缺失/冲突计数与推荐连接;合并失败时应用/技能仍可能已导入,响应可带 query_deps_merge_error 便于提示。


相关文档