gpt4 book ai didi

csv - Drupal 8 - 从具有多个值的 CSV 迁移图像字段

转载 作者:行者123 更新时间:2023-12-04 17:51:30 25 4
gpt4 key购买 nike

我正在尝试使用核心的 Migrate 模块、Migrate Source CSV、Migrate Tools 和 Migrate Plus,使用 CSV 文件中的内容填充新的 Drupal 8 (8.3.2) 站点。我能够使用单个图像成功导入每个节点,但我不确定如何将多个图像迁移到节点的多值图像字段中。

我的模块目前看起来像这样:

id: product_data
label: Products
migration_group: product_migration
migration_tags:
- node
- product
source:
plugin: csv
path: 'public://import/products/products.full.csv'
header_row_count: 1
keys:
- product_sku
constants:
bool_0: 0
bool_1: 1
uid_root: 1
restricted_html: restricted_html
destination:
plugin: 'entity:node'
default_bundle: product
process:
title: product_name
field_sku: product_sku
sticky: constants/bool_0
promote: constants/bool_1
uid: constants/uid_root
'field_image/target_id':
plugin: migration
migration: product_image
source: product_full_image
migration_dependencies:
optional:
- product_image
dependencies:
enforced:
module:
- custom_migration

并创建图像实体:

id: product_image
label: Images associated with a product.
migration_group: product_migration
migration_tags:
- product
- file
- image
source:
plugin: csv
path: 'public://import/products/products.full.csv'
header_row_count: 1
keys:
- product_full_image
fields:
product_full_image: Name of the image file associated with the program.
constants:
file_source_uri: public://import/products/old-images
file_dest_uri: 'public://program/image'
destination:
plugin: 'entity:file'
process:
file_source:
-
plugin: concat
delimiter: /
source:
- constants/file_source_uri
- product_full_image
-
plugin: urlencode
file_dest:
-
plugin: concat
delimiter: /
source:
- constants/file_dest_uri
- product_full_image
-
plugin: urlencode
filename: product_full_image
uri:
plugin: file_copy
source:
- '@file_source'
- '@file_dest'
dependencies:
enforced:
module:
- custom_migration

csv 文件的格式如下:

product_sku,product_name,product_full_image
C242,couch,Blue Couch,"image1.jpg,image2.jpg"
C243,chair,Red Chair,image3.jpg

我已经尝试使用 expload 和 iterator 插件,但老实说我完全迷失在这里。任何想法将不胜感激。

最佳答案

我能够解决这个问题 - 希望这可以帮助同一条船上的其他人。我的最终迁移如下所示:

主要模块:

id: product_data
label: Products
migration_group: product_migration
migration_tags:
- node
- product
source:
plugin: csv
path: 'public://import/products/products.full.csv'
header_row_count: 1
keys:
- product_sku
constants:
bool_0: 0
bool_1: 1
uid_root: 1
restricted_html: restricted_html
destination:
plugin: 'entity:node'
overwrite_properties:
- field_image
default_bundle: product
process:
field_image:
-
plugin: explode
delimiter: ;
source: image
-
plugin: migration
migration: product_image
no_stub: true
migration_dependencies:
optional:
- product_image
dependencies:
enforced:
module:
- custom_migration

上面引用的“products.full.csv”文件如下所示:

product_sku,product_name,image
C242,Blue Couch,image1.jpg;image2.jpg;image3.jpg
C243,Red Chair,image4.jpg

为所有图像导入和创建实体:

id: product_image
label: Import all product images.
migration_group: product_migration
migration_tags:
- product
- file
- image
source:
plugin: csv
path: 'public://import/products/images.csv'
header_row_count: 1
keys:
- image
fields:
new_image: Name of the image file associated with the program.
constants:
file_source_uri: public://import/products/images
file_dest_uri: 'public://program/image'
destination:
plugin: 'entity:file'
process:
file_source:
-
plugin: concat
delimiter: /
source:
- constants/file_source_uri
- new_image
-
plugin: urlencode
file_dest:
-
plugin: concat
delimiter: /
source:
- constants/file_dest_uri
- new_image
-
plugin: urlencode
filename: new_image
uri:
plugin: file_copy
source:
- '@file_source'
- '@file_dest'
dependencies:
enforced:
module:
- custom_migration

上面引用的“images.csv”文件只有一列,只是一个包含要为其创建实体的所有图像的直接列表,每行一个:

image
image1.jpg
image2.jpg
image3.jpg
image4.jpg

关于csv - Drupal 8 - 从具有多个值的 CSV 迁移图像字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44348853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com