XML 模型
端口将知行之桥中的 表建模为 XML。建模遵循以下结构:- 父元素标识要插入的表。
- 每个子元素对应目标表中的一列。
</> 代码 可以查看表的 XML 模型。以下 XML 是名为 Account 的表的简化示例模型,它被建模为 XML 元素 <Account>:
Id、account_c、AccountNumber 和 AccountSource 是 Account 表中的列。当端口处理与此结构匹配的 XML 文件时,它会自动将来自该 XML 的值插入到 Account 表中。当端口查询 Account 表时,它会输出与此结构匹配的 XML。
批处理输入
批量输出
子表
子表 XML
插入父表和子表时,输入映射 XML 结构将是多层的。以下 XML 是通过外键关联的两个表的示例输入映射:Account 是父表,AccountPartner 是子表。当 端口处理匹配此结构的输入 XML 文件时,它会更新这两个表并确保链接两条记录的键相同。
使用 ref 属性
子表中的某些列标有 ref 标记。此标记表示这些列对应于父表中的主键。在对父表进行插入之后,在对子表进行插入之前,端口会在父表中查询它刚刚插入的记录的主键。然后,端口在插入子表时使用此值。 当父表的主键由 生成时,这很有用。在这种情况下,此列不会作为输入 XML 传入,因此端口在将记录插入到父表中之前不知道该列的值。 在 XML 模型中,ref 属性表示可以稍后引用列,或者应该从映射中的另一列读取列的值。为了引用由 生成的列的值,列元素应包含一个设置为保留值 LAST_INSERT_ID 的 ref 属性:
ref 元素设置为相关列的名称:
ref 语法指示端口在插入后从父表中检索 id,然后将检索到的值用作子表中的 id 列。
从子表中查找
只处理新的或更改的记录
使用最后修改的列
使用自定义列
预处理和后处理查询
在 UPSERT 映射
在 UPSERT 映射中,可以发出在所有记录被 UPSERT 到表中之前或之后自动执行的查询。 要配置此功能,首先单击 Upsert 配置 窗格中的</> 代码。

requireInput:设置为false。此属性值指示端口即使输入文件中没有任何匹配的输入元素也发出查询。insertQuery:包含要在 UPSERT 查询之前或之后执行的语句。table(可选):设置为要使用额外查询定位的表的名称。(在下面的示例中,表名称是 updateTable。)如果在映射的根级别发出查询(即,作为<Items>元素的子元素),此属性不是必需的。如果将查询作为另一个表的子项发出,设置 table 属性可确保查询与该表的列区分开来。
<runFirst> 会在任何 UPSERT 请求之前对表运行 EXEC [dbo.FlushTemp]:
<runLast> 会在所有 UPSERT 请求完成后对表运行 EXEC [dbo].[CommitTemp]。
runFirst 和 runLast)都是占位符,你可以随意自选。
UPSERT 映射中的预处理和后处理查询不接受查询中未硬编码的输入元素,并且它们也不会生成输出数据。
在 SELECT 映射中
在 Select 映射中,可以发出在对目标表发出查询之前或之后自动执行的查询。要配置此功能,首先单击 Select 配置 窗格中的</> 代码。

outputResult:设置为false。此属性值指示端口不将查询的任何数据作为结果返回到输出文件中。selectQuery:包含要在 SELECT 查询之前或之后执行的语句。table(可选):设置为要使用额外查询定位的表的名称。(在下面的示例中,表名称是 selectTable。)如果在映射的根级别发出查询(即,作为<Items>元素的子元素),此属性不是必需的。如果将查询作为另一个表的子项发出,设置 table 属性可确保查询与该表的列区分开来。
<runFirst> 会在对表发出 SELECT 查询之前运行 EXEC [dbo].[prepTable]:
<runLast> 会在对表发出 SELECT 查询及任何子查询之后运行 EXEC [dbo].[cleanTable]:
runFirst 和 runLast)都是占位符,你可以随意自选。
SELECT 映射中的预处理和后处理查询不接受查询中未硬编码的输入元素。
XML 属性
表属性
allColumns
insertQuery
outputResult
processChangesOnly
requireInput
selectQuery
table
upsertQuery
列属性
aggregate
column
id
在选择(Select)映射中,此属性使用 Id 标记对列值进行标记,随后可以在子查询中使用语法${#ID} 引用该标记。当子查询中需要列值,且多个表中的匹配列名可能导致选择歧义时,这非常有用。