You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单个Migration.yml中生成含分类引用字段的术语并迁移节点?

合并migrate_spreadsheet迁移任务实现单批次节点导入

核心方案

将原有的两个迁移任务合并为单迁移配置,通过迁移插件链同时完成术语的查找/创建与节点导入,无需拆分任务即可支持batchImport调用。核心是利用entity_lookup+entity_generate组合处理需要多字段匹配的provider术语,同时用原生entity_generate处理provider_name术语。

具体实现步骤

1. 基础迁移数据源配置

以Excel文件为数据源,指定列映射与唯一标识字段(regnr):

source:
  plugin: migrate_spreadsheet
  path: 'public://your_providers_file.xlsx' # 替换为实际Excel路径
  header_row: 1
  columns:
    A: regnr
    B: provider
    C: provider_name
    D: provider_number
  keys:
    - regnr # 用唯一值作为迁移源ID

2. 处理provider字段(多字段关联术语)

由于provider术语需要同时匹配name和field_provider_number,需通过插件链实现"先查找再创建":

  • 用entity_lookup匹配同时满足名称和编号的现有术语
  • 若未找到,用entity_generate创建新术语并自动填充field_provider_number
  • 将最终得到的术语ID映射到节点的field_provider字段

3. 处理provider_name字段(单字段匹配术语)

直接使用entity_generate插件,自动查找或创建匹配名称的术语:

field_provider_name:
  plugin: entity_generate
  entity_type: taxonomy_term
  bundle: provider_name # 替换为你的provider_name词汇机名
  source: provider_name

4. 完整迁移配置示例

id: node_provider_combined_import
label: 'Combined Import: Nodes + Provider Terms'
source:
  plugin: migrate_spreadsheet
  path: 'public://providers.xlsx'
  header_row: 1
  columns:
    A: regnr
    B: provider
    C: provider_name
    D: provider_number
  keys:
    - regnr
process:
  # 处理多字段关联的provider术语
  field_provider:
    -
      plugin: entity_lookup
      entity_type: taxonomy_term
      bundle: provider # 替换为你的provider词汇机名
      ignore_case: true
      # 同时匹配名称和provider_number字段
      match:
        name: provider
        field_provider_number: provider_number
      source:
        - provider
        - provider_number
    -
      plugin: entity_generate
      entity_type: taxonomy_term
      bundle: provider
      # 创建新术语时填充的字段值
      values:
        name: provider
        field_provider_number: provider_number
  # 处理单字段的provider_name术语
  field_provider_name:
    plugin: entity_generate
    entity_type: taxonomy_term
    bundle: provider_name
    source: provider_name
  # 节点基础字段配置
  title: regnr
  type: your_node_type # 替换为目标节点类型机名
destination:
  plugin: 'entity:node'
migration_dependencies: { } # 无依赖,单迁移独立运行

关键注意事项

  • 确保目标分类词汇(provider和provider_name)已创建,且provider词汇已添加field_provider_number字段
  • 迁移运行账号需拥有创建节点、分类术语的权限
  • 测试阶段建议先导入少量数据,验证术语匹配、创建及字段关联是否正确
  • 若需自定义匹配逻辑,可开发自定义迁移插件扩展entity_lookup的行为

内容的提问来源于stack exchange,提问作者rvdv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:40:24