将XML、CSV、JSON、Excel文件导入Pimcore对象、资产、文档 + 导出数据 + 创建REST API,无需任何编程

3.7.0 2024-08-13 13:41 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字段类型都支持导入。还支持将数据导入到资产和文档中(包括编辑元数据、标签等)。

在导入过程中,可以修改和调整数据以适应您的数据模型。

Import workflow

还支持导出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 中。

预览将直接显示原始数据字段是否设置正确。导入将数据读入一个“中间表”,这样用户可以在下一步进一步处理之前看到从上游系统导入的数据。

Import workflow

步骤 2:通过拖放映射属性

在第二步中,将中间表中的信息分配给类的属性。这些映射通过 Pimcore 后端 UI 中的拖放进行单独定义。

设置一个或多个关键字段,以便导入过程可以重复执行,并更新现有对象。

属性映射还可以用来修改源数据。对于每个字段分配,可以指定一个回调函数,例如,基于当前对象的导入或现有属性执行日期格式操作或其他计算。

Attribute mapping

其他亮点一览

  • 基于文件的导入(监视目录并在新文件上自动导入),例如
    • 自动将资产导入 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将资产分配给产品)。
      • 自动使用依赖导入/数据端口管道

    了解更多详情,我们录制了一个关于不同导入方式的教程视频

文档

要了解所有选项及其配置方式,请阅读完整文档观看教程视频

培训

我们还提供数据导演学院课程