CData 端口已弃用。与其他数据库端口不同,它不支持映射模式,因此 Upsert 操作仍需要使用 XML Map 端口来映射列。
表和列
如果为 CData 端口选择 Upsert,则必须从 CData 中选择一个(或多个)目标表。单击表格面板上方的添加按钮。


你可以通过单击添加并重复此过程来选择更多表。有关详细信息,请参阅子表。
UPSERT 查询行为
默认情况下,列映射中的 UPSERT 滑块设置为 ON。这意味着 UPSERT 映射在 INSERT 记录(如果没有匹配记录)或 UPDATE 记录(如果记录已存在)之前确定记录是否存在于目标中。
UPSERT 滑块设置为开启
当滑块设置为 ON 时,查询行为会根据在 UPSERT By 和执行此查询… 单选按钮中选择的内容而变化。按 ID 执行 UPSERT
如果输入 XML 中存在键列,则会向数据库发出查询以确定是否存在具有匹配键的任何记录:按非键列执行 UPSERT
通过选择表的主键,向数据库发出查询,以确定是否存在所选 UPSERT By 列包含匹配值的记录:如果输入中未指定所选的 UPSERT By 列,则查找将与 NULL 值一起使用,如以下查询所示:
使用自定义查询
还可以编写自定义查询来选择 UPSERT 键。此选项允许使用比单列匹配更复杂的逻辑来执行查找。考虑以下查询:@OrderID 语法用于引用匹配输入 XML 中的值。还可以使用静态值:'Active' 周围的引号表示该子句使用静态值。
同样,键列的成功匹配用于形成更新请求。如果没有匹配,则插入记录。
UPSERT 滑块设置为关闭
当滑块设置为 OFF 时,端口只需将所有查询插入数据库即可。检查输入映射的代码视图显示表的action 属性是 insert:
update,如以下代码片段所示:
知行之桥流程示例
为 Upsert 配置的 CData 端口选择表格和列后,将端口放置在知行之桥工作流的末尾。下面的屏幕截图描述了一个示例流程,其中包含一个 File 端口、一个 CSV 端口、一个 XML Map 端口,以及末尾的一个 CData Upsert 端口:
- File 端口从磁盘提取 CSV 文件并将其放入流程中。
- CSV1 端口将 CSV 文件转换为 XML。
- 此数据作为源文件传递给 XML_Map 端口,后者映射到源树状结构中。
- 来自 CData_Upsert 端口的数据作为目标文件传递给 XML_Map 端口,后者映射到目标树状结构。

- XML_Map 端口尝试自动将源元素映射到具有相同名称的目标元素。你可以手动更改这些映射,并通过将元素从源拖到目标来填充空白映射。

- CData_Upsert 端口根据映射执行 Upsert 并将结果数据传递给 CData。