Informatica 中的事务控制转换(示例)
什么是事务控制转换?
事务控制是一个活动的连接转换,它允许我们在映射执行期间提交或回滚事务。提交和回滚操作非常重要,因为它们可以保证数据的可用性。
在处理大量数据时,可能会出现需要提交数据到目标表的情况。如果提交过于频繁,则会给系统带来额外的开销。如果提交太晚,则在发生故障时可能导致数据丢失。
因此,为了提供灵活性,提供了事务控制转换。
TCL 提交和回滚命令
此转换中有五个内置变量可用于处理操作。
TC_CONTINUE_TRANSACTION
在 `tc_continue_transaction` 中,不执行任何操作,数据加载过程照常继续。
TC_COMMIT_BEFORE
在 `tc_commit_before` 中,当找到此标志时,会在处理当前行之前执行提交。
TC_COMMIT_AFTER
在 `tc_commit_after` 中,在处理当前行之后执行提交。
TC_ROLLBACK_BEFORE
在 `tc_rollback_before` 中,首先执行回滚,然后处理数据以进行写入。
TC_ROLLBACK_AFTER
在 `tc_rollback_after` 中,处理数据然后执行回滚。
示例
在此示例中,当部门编号等于 20 的条件为真时,我们将向目标表提交数据。
步骤 1) 创建一个以 EMP 为源,EMP_TARGET 为目标的映射。
步骤 2) 使用转换菜单创建一个新的转换,然后:
- 选择事务控制作为新转换。
- 输入转换名称“tc_commit_dept20”。
- 选择创建选项。
步骤 3) 创建事务控制转换,然后单击完成按钮。
步骤 4) 将所有列从源限定符拖放到事务控制转换,然后将所有列从事务控制转换链接到目标表。
步骤 5) 双击事务控制转换,然后在属性编辑窗口中:
- 选择属性选项卡。
- 单击事务控制编辑器图标。
步骤 6) 在表达式编辑器中输入表达式:
“iif(deptno=20,tc_commit_before,tc_continue_transaction)” 并选择确定。
这意味着如果找到部门编号 20,则提交到目标表的事务,否则继续当前处理。
步骤 7) 在上一个窗口中选择确定。
现在保存映射,并在创建会话和工作流后执行它。此映射将在数据中找到部门编号 20 时将数据提交到目标表。