在D8中如何在使用csv文件导入时忽略其他重复值并合并多项值字段?

时间:2018-02-14 10:44:37

标签: csv import migration drupal-8 import-csv

在d8中我将csv文件数据导入内容类型,我有csv文件这样的东西。

id,node_title,multi_term,status
===============================
1,testing title,term_A,1
1,testing title,term_B,1
1,testing title,term_C,1
1,testing title,term_D,1
1,testing title,term_E,1
===============================

我的yml文件就像这样

id: importing_content
class: null 
field_plugin_method: null
cck_plugin_method: null
migration_tags: null
migration_group: null
label: 'Import Content Type Story'
source:
  plugin: csv
  path: story.csv
  header_row_count: 1
  delimiter: ','
  keys:
    - id
process:
  nid: id
  title: node_title
  tag_term:
    -
      plugin: migration_lookup
      migration: taxonomy_migration
      no_stub: true
      source: multi_term 
  status: status
  type:
    plugin: default_value
    default_value: content_type
destination:
  plugin: 'entity:node'
migration_dependencies: null

使用此配置我成功导入了csv文件,但这也会忽略重复的id行及其所有值。

我的预期结果是忽略具有相同id的所有重复列,但使用逗号multi_term更新列content type field的唯一值multiple value term reference field类型为{{1}} }。

任何帮助将不胜感激, 提前谢谢:)

2 个答案:

答案 0 :(得分:0)

您可以使用migrate_plus模块附带的entity_generate插件来实现这一目标。

但请注意,使用entity_generate创建的实体作为副作用,这意味着它们不会回滚 - 因为它们没有自己的迁移,因此不会在迁移映射表中跟踪它们。 / p>

这是使用entity_generate的主要缺点,而不是迁移他们自己的迁移中的所有实体,这是可行的推荐方法。

答案 1 :(得分:0)

源插件使用键中的列表值来标识单个行。

如果您有多个值可以用作唯一键,则将所有这些列添加为键。根据您的值,您可以将id,node_title,multi_term,status全部添加为键。