数据映射:二进制对象(第二部分)

二进制对象(BLOB)在数据库中管理起来可能比较麻烦。在之前的文章中,我们描述了一种使用 MapForce 进行数据映射的方法,可以将二进制对象插入到数据库中,并生成元数据,以便后续识别这些 BLOB 对象。数据映射二进制对象的另一个重要挑战是从中提取二进制数据,并将其保存为一种易于理解的格式,同时尽可能保持与原始数据的忠实性。

我们来了解一下它是如何实现的。

MapForce 内置的 write-binary-file 函数可以将数据库中的 BLOB (二进制大对象) 值提取出来,并将其写入文件。我们将扩展 MapForce 在线帮助文档中的示例,以补充之前的文章。我们修改后的映射方案使用运行时提供的参数,从数据库中提取一个或多个二进制对象。

最初的设计目的是使用 SQLite 数据库来跟踪各种二进制文件资产,这些资产用于支持市场部门的产品。这些二进制数据可以包括产品Logo图像文件、产品数据表的PDF文件、产品使用截图、照片、视频文件等。我们的数据库表包含产品元数据、资产类型以及每个原始文件名。

我们首先对二进制对象进行数据映射,以便提取数据。为此,我们将数据库导入到一个新的映射配置中。这次,我们不会选择一个表来进行映射,而是会创建一个包含参数的SQL SELECT查询,用于根据产品和资产类型的元数据字段来过滤结果。这个SELECT语句将返回一个或多个BLOB(二进制大型对象)以及它们原始的文件名。

接下来,我们点击映射面板中的“SELECT”语句,以显示用于映射的参数

现在,每个独立的参数和输出结果都已可用

通过“插入”菜单或工具栏上的相应图标,我们可以插入一个特殊字段,用于在设计阶段进行测试。在后续的自动化执行过程中,我们可以提供新的参数值,以覆盖默认设置。

您可以在输入定义对话框中指定一个设计时的默认值,但我更喜欢将默认值作为字符串常量来提供,就像上面所示。 这样,默认值无需打开对话框即可查看,并且修改测试用的值也更加快捷。

我们将按照 MapForce 帮助文档的说明进行操作 数据映射二进制对象的示例 用于创建 SELECT 查询结果的映射关系。以下是完整的映射关系:

该映射中突出的 write-binary-file 函数会将数据库中二进制对象的内容保存到指定的文件中,该文件路径由 filepath 输入参数提供。

我们对示例映射进行了两次改进。在原始示例中,二进制文件的文件名使用了固定的字符串值,但我们现在从数据库中获取原始文件名。此外,我们还提供了一个名为“userPath”的输入对象,用于将文件夹路径和文件名连接起来。

现在,我们可以通过点击映射设计面板底部的“输出”按钮来测试映射效果。MapForce 会执行查询,并使用在映射中定义的参数。然后,会打开“输出”窗口:

第一个输出结果只是我们附加到 write-binary-file 函数的消息。点击右箭头图标可以打开第二个输出结果。下图显示了当我们点击“使用...”(或类似选项)按钮,并将 Windows 照片查看器设置为用于打开 .png 文件的默认应用程序后的显示效果。

提供的文件路径为“C:\projects\objects”,数据库中存储的文件名为“diffdog_2021.png”。照片窗口中显示的文件名“~mf95AE.png”只是输出预览的随机名称。在“输出”菜单中,提供了一个选项,可以永久保存该文件

我们可以修改参数,然后进行另一次测试。这次,我们将使用 SQLite 的通配符来匹配数据库中的任何内容,用于资产参数:

这次当我们点击“输出”按钮时,会检索到多个二进制对象:

点击查看所有二进制文件搜索结果,我们看到其中一个结果是PDF格式的数据手册,一个结果是.png格式的截图,还有一个结果是.png格式的Logo

自动映射数据到二进制对象

为了扩展我们的应用场景需求,假设我们需要允许任何团队成员根据需要从数据库中检索产品资源。MapForce Server 基于在 MapForce 中设计的优化数据映射,执行自动数据转换

可以将一份 MapForce Server 安装在网络服务器上,并使其对多个用户可用。然后,我们只需要将数据映射关系保存为 MapForce Server 的执行文件(.mfx),具体操作可以在 MapForce 的“输出”菜单中完成。我们将使用文件名 "extract-product-assets-from-DB.mfx"。

然后,任何经过身份验证的用户都可以通过命令行执行数据映射。映射中“product”、“asset”和“userPath”这些输入组件的参数,将在运行时由命令行指定。我们甚至可以在一个批处理文件中创建一个示例命令行,用户可以根据需要进行编辑和运行:

添加注释,列出每个参数的可能取值,并附带编辑说明,是一个相对简单的任务。

为了实现更高级别的自动化生产,MapForce 的映射配置可以部署到 FlowForce Server 中,并且 根据各种触发条件执行. 要开始您自己的数据映射、转换和处理项目,请 下载免费试用版 包括教程、帮助文档以及更多示例!