blackbit_digital_commerce / pimcore-import
将XML、CSV、JSON、Excel文件导入Pimcore对象、资产、文档 + 导出数据 + 创建REST API,无需任何编程
This package is auto-updated.
Last update: 2024-09-23 05:25:45 UTC
README
这是一个针对Pimcore的插件,旨在优化所有PIM相关功能,特别是导入、导出、自动化、工作流程
此插件做什么?
Data Director可以
- 将XML、JSON、CSV、Excel和其他数据源导入到Pimcore数据对象、资产和文档中
- 将数据从Pimcore导出到XML、JSON、CSV、Excel和其他格式
- 创建用于写入或读取Pimcore数据的REST API
- 将数据推送到外部系统(商店、网站等)
- 在Pimcore内部创建自动化和工作流程
- 使Pimcore中的日常任务更加高效
它是如何工作的?
在Pimcore后端GUI中,您可以定义要从导入源提取哪些数据并将其分配给Pimcore对象的字段。所有Pimcore字段类型都支持导入。还支持将数据导入到资产和文档中(包括编辑元数据、标签等)。
在导入过程中,可以修改和调整数据以适应您的数据模型。
还支持导出Pimcore数据,包括关系数据、图像/缩略图等。使用智能缓存系统,导出非常快,因为导出数据在对象保存时(在后台,所以保存不会花费更多时间)更新,而不是在请求导出时更新。对于导出,Data Director提供了许多现成的模板
CSV导出(文件仅或CSV文件+资产作为zip文件)
- JSON导出(文件仅或JSON文件+资产作为zip文件)
- XML导出(文件仅或XML文件+资产作为zip文件)
- Excel导出
- 通过插件支持行业标准格式,如BMEcat、Datanorm
对于每个导入或导出,无需额外努力即可自动创建包含身份验证的REST API。
除了生成这样的导出文档外,还可以指定对导出文档的处理方式:一些现成的操作包括
- 通过(S)FTP、AWS S3和其他云存储提供商上传导出文档
- 发送电子邮件
可以从后端UI、通过cron作业或基于事件的(一旦源数据类对象被保存)启动导入和导出。后者可以用于设置自动化,如
- 一旦Pimcore数据对象发生变化,就自动将数据发送到外部系统
- 当Pimcore数据对象发生变化时执行的工作流程(触发翻译、业务流程等)
有关如何设置导入和导出的概述,请参阅我们的教程视频。
示例用例
以下是Data Director被使用的一些示例
- 将数据导入/导出到ERP系统,如SAP、Navision / Business Central、Infor、Webware、JTL等。
- 自动将电子商务数据导出到在线商店,如BigCommerce、Shopware、Shopify、xt:commerce等。
- 导入/导出BMEcat(通常是或针对Mercateo、PSG、Wucato等平台)
- 从/到Wordpress、Hubspot、Typo3导入/导出内容
- 从/到CRM系统,如Salesforce、Hubspot导入/导出客户相关数据
- 将电子商务相关信息导出到Hubspot以自动化电子邮件营销
- 为市场分销商如ProductsUp、Channable等创建产品信息源。
- 为SaaS搜索引擎如FactFinder、Doofinder等创建导出信息源。
- 导出产品数据以用于InDesign的产品目录、数据表等。
- 为谷歌购物/商人中心、Facebook等创建产品信息源。
- 从Icecat、Bidex导入产品数据。
- 同步资产文件文件夹/DAM系统与Pimcore资产。
- 实施数据质量检查,包括通知。
- 创建用于从/向Pimcore读取/写入信息的REST API。
- 使用DeepL/AWS Translate进行自动翻译。
- 连接到翻译提供商如Trados。
- 使用人工智能(OpenAI.com API(ChatGPT)、GPT-3、GPT-4)进行自动文本生成。
与其他Pimcore导入插件相比的优势。
- 所有配置都可以在Pimcore后端用户界面中完成,无需创建PHP文件或其他类似文件,即使是复杂的导入。
- 更好的导入性能。
- 流式输入文件允许导入大型导入文件。
- 许多优化以提高将数据导入Pimcore元素的速度,或者检查数据是否实际更改(如果没有,则跳过导入或保存以节省时间)。
- 自动完成功能,可以快速设置导入,并为复杂导入提供操作建议。
- 灵活的导入资源,您可以从中导入数据:
- 单个文件
- 文件夹
- URL
- 用于复杂需求的PHP脚本,例如,只有当导入文件夹中存在具有相同文件名(但不同文件扩展名)的PDF文件时才导入CSV文件。
- 使用cURL请求导入需要OAuth或类似身份验证的资源的数据(当然,在这种情况下也可以使用PHP脚本进行身份验证,然后提供要导入的数据)。
- 支持的导入格式:
- CSV
- XML
- JSON
- Excel
- Pimcore元素(数据对象、资产、文档)
- Pimcore报告(例如,从Google Analytics、外部数据库或其他Pimcore数据库表导入数据)
- 文件系统(例如,导入资产)
- 完全灵活性:对于常见的数据转换用例,该组件提供了现成的模板。但您也可以编辑这些模板,甚至编写自定义(PHP或JavaScript)函数来设置特定字段的转换管道、条件等。
- 导入对象层次结构(设置导入元素的父元素)
- 写入保护字段选项:只有当字段为空时才导入特定字段的数据。
- 动态导入到对象砖/分类存储字段(目标字段可以基于导入数据动态定义)
- 生成响应文档,例如,向源系统发送成功状态。
- 根据事件自动启动导入,例如:
- 在上传资产后自动将资产分配给数据对象。
- 自动启动上传的CSV、JSON、XML、Excel文件的导入。
- 通过从外部系统(通过REST API)推送触发导入,以实现无需交换文件即可使用实时界面。
- 可追溯性:导入存档(对于导入文件)和可搜索的导入日志历史记录,以始终知道某个特定字段何时以及为什么获得某个值。
- 撤消导入:如果由于错误导致数据丢失,则仅将导入的字段撤消到特定日期,这比恢复数据库转储要好得多(因为非导入字段的数据得到保留)。
- 数据端口也存储为JSON文件,易于通过VCS(Git)追踪更改,易于在Pimcore实例之间部署。还支持下载和导入数据端口配置。
- 优化继承功能
- 权限系统:对于每个数据端口,您可以配置谁有权配置和/或执行数据端口。
- 导入不同类型的元素
- 数据对象
- 资产
- 文档
- 数量值单位(包括转换系数)
- 内置连接到翻译提供商(DeepL、AWS Translate)以一键设置自动翻译(包括缓存翻译以节省重复翻译字符串的成本)
- 人工智能功能,例如根据产品名称和描述自动分配类别
与其他Pimcore导出插件相比的优势
- 自动执行或准备导出,每当保存的对象的数据需要导出时
- 一旦数据发生变化,就准备导出,这样在请求导出时就不必生成数据 -> 非常快速的导出,因为导出文档已经在请求时可用
- 数据不是反复从Pimcore数据库中提取,而只是在元素更改时提取
- 自动将导出上传到目标系统,以确保数据始终是最新的
- 自动将数据发送到其他API,例如在线商店、市场分销商
- 一旦数据发生变化,就准备导出,这样在请求导出时就不必生成数据 -> 非常快速的导出,因为导出文档已经在请求时可用
- 导出文档的格式/文档结构具有完全的灵活性,以根据目标系统的预期量身定制导出文档结构
- 访问与导出对象相关联的任何数据,例如在导出产品时,可以轻松访问分配的类别、分配类别的图像以及分配类别图像的元数据 - 您可以根据需要无限级联
- 设置转换管道的完全灵活性,以更改值到所需格式(例如日期格式转换、将数量值转换为特定单位等)
- 预定义的导出模板,用于创建带或不带引用资产文件的CSV、XML、JSON导出(例如,CSV文件加资产(或缩略图)打包在zip存档中)
- 智能检查自上次导出以来是否有任何更改。如果没有更改,则从缓存中提供结果文档
- 通过URL访问导出,例如在外部系统中提取数据馈送
- 通过任何字段过滤要导出的元素,无论是通过数据端口配置进行过滤还是使用一次性导出的临时过滤
与自己的导入实现相比的优势
- 最小化编程工作量:只有数据源的数据修改需要最小的编程
- 性能
- 只有在上次导入后没有发生变化时才导入数据
- 如果在导入过程中对象没有更改,则不需要保存它
- 当对象更改时更新导出数据,因此在请求导出时已经准备就绪
- 灵活性
- 导入和导出可以完全自定义,以符合数据源和您的Pimcore数据模型
- 支持所有Pimcore元素,包括数据对象、对象块、字段集合、资产和文档
- 支持导入标签和属性
- 透明度
- 使用导入存档和可搜索的导入日志历史记录,您可以始终跟踪为什么某个字段具有特定的值,以及哪个导入文件对此负责
- 始终查看当前的导入/导出状态(当前作业的进度、队列中的项目数量)
- 舒适功能
- 自动从导入资源中提取原始数据字段
- 自动将原始数据字段映射到Pimcore类字段
- 优化继承功能
- 替换占位符(例如自动生成文本)
- 自动翻译(使用DeepL API)
- 错误监控/导入通知
- 撤销导入
一网打尽
数据导演是用于以下目的的单一包
- 将数据导入到Pimcore元素
- 当数据对象被保存时检查和更改数据 -> 与覆盖Pimcore模型类的
save()
方法或创建事件处理器相比,具有更高的透明度 - 以任何您想要的格式导出数据,并将导出文档发送到任何地方
- 在Pimcore内自动化数据处理
- 支持针对频繁任务的UX优化工作流
初始努力只需进行一次,与您为所有不同需求创建多个包相比,这些包都是数据管理员能够满足的。
如何获取插件
您可以在Blackbit 商店购买此插件,或给info@blackbit.de发邮件。
演示
您可以通过申请演示登录凭证在我们的 Pimcore 演示系统中测试数据管理员。
工作流程
步骤 1:将 CSV、XML、JSON 或 Excel 导入到 Pimcore
此插件已在许多电子商务和主数据管理项目中得到证明,并且是根据我们客户的需求开发的。
插件的目标是将上游系统中的信息导入到 Pimcore 对象中,适当地用更多信息丰富它们,并通过 Pimcore 本身或通过下游系统(如在线商店)发布。
导入总是分为两个步骤:在第一步中,直观的用户界面确定哪些 CSV 文件的列或哪些 XML/JSON 文档的属性应该导入到 Pimcore 中。
预览将直接显示原始数据字段是否设置正确。导入将数据读入一个“中间表”,这样用户可以在下一步进一步处理之前看到从上游系统导入的数据。
步骤 2:通过拖放映射属性
在第二步中,将中间表中的信息分配给类的属性。这些映射通过 Pimcore 后端 UI 中的拖放进行单独定义。
设置一个或多个关键字段,以便导入过程可以重复执行,并更新现有对象。
属性映射还可以用来修改源数据。对于每个字段分配,可以指定一个回调函数,例如,基于当前对象的导入或现有属性执行日期格式操作或其他计算。
其他亮点一览
- 基于文件的导入(监视目录并在新文件上自动导入),例如
- 自动将资产导入 Pimcore(例如,从网络驱动器导入)
- 自动通过文件名将资产映射到 Pimcore 对象
- 从源目录导入多个文件(CSV、XML、JSON、Excel),具有自动数据集去重
- 从 URL 作为数据源导入
- 从 Pimcore 对象导入数据
- 无数据丢失地从一种字段类型迁移到另一种类型
- 动态大量数据处理(目前 Pimcore 网格中无法执行,例如,提高价格 10%)
- 从 Pimcore 报告导入数据
- 例如,通过邮件发送报告(例如,当需要报告对象的操作时通知负责的用户)
- 例如,将 Google Analytics 中的数据导入您的 Pimcore 数据对象以进一步使用这些数据
- 导入文档(填写可编辑部分)
- 生成响应文档
- 生成包含所有成功导入项的响应文档并将其发送到源系统
- 跟踪导入错误
- 调用依赖于当前导入的另一个导入
- 创建其他系统可以用作导入源的导出文档(JSON/CSV/XML 等)
- 为单页应用/PWA 前端请求创建响应文档
- 使用内置 REST API 执行导入和导出
- 跳过导入源中的记录,例如,如果数据缺失或质量不足
- 轻松导入关系
- 通过人工智能/机器学习自动将元素分配给关系
- 导入对象层次结构/对象树
- 可以指定父元素
- 选项优化继承(数据尽可能高地在对象层次结构中输入)
- 通过翻译提供者自动翻译文本(通过DeepL或AWS API)
- 支持所有Pimcore数据类型,包括与元数据的关联、对象块、字段集合等。
- 优化性能
- 如果源数据没有改变,可以跳过数据记录的导入
- 如果在导入中对象的某些数据没有改变,则不需要保存
- 生成条形码和二维码图像
- 可以撤销导入
- 如果出现属性分配错误,并且数千个对象被填充了错误数据,则可以撤销更改 - 在这种情况下,只将导入中映射的字段恢复,只为导入中更改的对象 - 与完全备份恢复相比具有很大的优势
常见问题(FAQ)
导入
-
是否可以创建文件夹或对象层次结构(在数据对象树中将一个对象导入到另一个对象下面)?
- 是的。您可以创建文件夹或将导入的对象放置在另一个对象下面。您还可以根据导入数据动态分配父元素。还有关于如何设置对象层次结构的教程视频。
-
如何更新现有对象?
-
您可以将数据对象类中的任何字段分配为键字段。在导入开始时,会尝试找到具有导入值的现有对象。如果找到,则更新该对象。例如,这可以是产品对象的SKU。还可能存在组合键字段,例如,当您的产品具有产品编号和颜色时 - 只有产品编号和颜色的组合是唯一的,因此您可以将其都设置为键字段。
还可以将导入模式设置为仅更新现有对象(而不创建新对象)。这在从不同来源收集一个数据对象类数据时非常有用。例如,当产品数据从ERP系统导入,而价格来自定价系统时。在这种情况下,定价导入可能会得到一个尚不存在的产品SKU。在这种情况下,可能不想仅创建一个只有价格的新对象,而其他字段都是空的。
甚至可以从一个导入数据集中更新多个对象。因此,所使用的键字段不必是唯一的。如果想要更新所有具有特定对象分配给多对多关系字段的对象,这可能很有用。有关更多详细信息,我们录制了一个教程视频,介绍如何从一个导入数据集中更新多个对象
-
-
是否可以动态分配目标类?
-
每个数据端口恰好有一个目标类。但当然,您可以创建多个具有不同目标类的数据端口。它们都可以使用相同的导入文件。由于您可以跳过导入项,因此每个数据端口都可以处理其应处理的导入项。因此,总结一下:是的,您可以动态分配目标类。
除了跳过之外,还可以只使用一些字段。例如,您可以使用包含制造商列的产品CSV文件在数据端口中创建制造商数据对象,并在另一个数据端口中将制造商对象分配给产品。甚至可以将多个数据端口连接到管道 - 在这种情况下,首先创建制造商对象,然后将其分配给产品。
-
-
如何填充本地化字段?
-
可以为每种语言单独映射本地化字段。这样,您可以将导入文件中的不同列/字段分配给本地化字段的不同的语言。
此外,还有一个内置功能,可以使用DeepL或AWS Translate API自动翻译值。更多详情,请查看有关自动翻译的教程视频。
-
-
如何将其他对象分配给关系字段?
- 您可以通过相关对象类中的任何字段查询相关对象。例如,您可以通过查询名称字段中包含
ABC
的制造商对象来将制造商对象分配给产品。实际的逻辑是在Pimcore后端中的回调函数中实现的(无需在任何地方创建PHP文件或类)。您无需编写复杂的PHP代码来完成此任务,但我们提供模板用于大多数常见任务。例如,要分配上述制造商对象,您只需从模板列表中选择通过名称分配制造商对象
函数。我们还录制了有关分配相关对象的教程视频。
- 您可以通过相关对象类中的任何字段查询相关对象。例如,您可以通过查询名称字段中包含
-
能否转换导入数据?
- 是的。对于每个字段,您都可以在回调函数中实现自定义逻辑(在Pimcore后端内部实现,您无需在任何地方创建PHP文件)。在这个回调函数中,您将获得导入数据和当前对象数据,并且可以使用任何语言构造,如条件、循环等。您可以使用PHP或JavaScript来实现这些回调函数。
-
如何分配资产?
-
资产可以通过URL、文件系统路径分配,或者您可以查询现有资产。您可以在数据对象导入过程中创建资产(例如,当您有一个包含图像URL的产品数据源时)。更多详情请查看关于分配图像的教程视频。
或者您可以单独导入资产,例如,当您将网络驱动器连接到Pimcore服务器,并希望自动将此文件夹中的资产导入Pimcore。更多详情请查看从文件系统导入资产的教程视频
-
-
能否一次性导入多个文件?支持哪些导入资源?
- 是的。您可以逐个导入文件,从文件夹(包括搜索模式,例如/导入/*.xml)导入文件,从远程存储((S)FTP)导入文件,从Pimcore Assets导入文件,从URL导入数据,从cURL请求导入数据,从PHP脚本导入数据。后两者在需要从需要身份验证的API导入数据时特别有用。
-
如何启动导入?
- 导入可以从以下方式启动:
- 手动从Pimcore后端启动
- 手动在目标文件夹内的对象或源文件夹内的资产上右键单击(当源文件夹在Pimcore资产内时)
- 手动或自动通过命令行启动,这也可以用于通过cronjob或Process Manager Bundle调用的定期导入
- 手动或自动通过REST API启动,这可以用于将数据从源系统推送到Pimcore,而无需在系统之间交换文件
- 自动导入源更改时启动。例如,当某个文件夹中上传了新文件时,可以自动启动导入(一个用例是自动通过从资产文件名中提取SKU将资产分配给产品)。
- 自动使用依赖导入/数据端口管道
了解更多详情,我们录制了一个关于不同导入方式的教程视频。
- 导入可以从以下方式启动:
文档
培训
我们还提供数据导演学院课程。