关于在 XML 中使用 staging_to_target 元素 - Teradata Data Mover

Teradata® Data Mover 用户指南

Product
Teradata Data Mover
Release Number
17.05
Published
2020 年 10 月
Language
中文 (简体)
Last Update
2020-12-18
dita:mapPath
zh-CN/xxl1591023586203.ditamap
dita:ditavalPath
zh-CN/xxl1591023586203.ditaval
dita:id
B035-4101
Product Category
Analytical Ecosystem

在执行部分表复制或完整表复制操作时,如果目标表已存在,则 Data Mover 会使用目标暂存表。staging_to_target 元素的值用于指定如何将目标暂存表中的数据复制到目标表,该设置会覆盖 Data Mover 通常用于将暂存表中的数据复制到目标表的方法。Data Mover 方法可将 MERGEDELETEINSERT/SELECT 结合使用,具体取决于关键列、数据库版本等因素。

如果您已为 staging_to_target 元素指定了 MERGE 值,则覆盖会失败。Data Mover 会确定 MERGE 方法未成功复制数据,并出现错误。

如果您没有 MERGE 语句所需的 UPDATE 权限,请使用 staging_to_target 元素。但是,请谨慎使用该参数,因为 Data Mover 会自动选择最高效的方式来复制数据。

staging_to_target 元素是可选的,仅可在 XML 文件中指定,不作为命令行界面上的参数使用。

staging_to_target 元素在 XML 文件中的 key_columns 元素下。下表列出了 staging_to_target 元素的有效值。

说明
NOT_SPECIFIED (缺省值)推荐使用,因为它会指定 Data Mover 选择效率最高的方式将目标暂存表中的数据复制到目标表。
MERGE 指定使用 MERGE 语句复制数据。Data Mover 会验证 MERGE 语句是否可用于复制数据。如果无法使用 MERGE,则会出现错误。请注意,MERGE 语句不能用于复制多重集表。
DELETE_INSERT 通过 DELETE 语句指定从目标表中删除的行,然后通过 INSERT/SELECT 语句将暂存表中的行复制到目标表。

要删除的行取决于作业。对于部分表复制操作,仅删除与 SQL 查询匹配的行。对于整个表复制操作,将删除所有行。

INSERT_ONLY 指定不从目标表中删除任何行,而是使用 INSERT/SELECT 语句将行从暂存表复制到目标表。
DELETE_DISTINCT_INSERT

通过 DELETE DISTINCT SELECT 语句指定从目标表中删除的行,然后通过 INSERT/SELECT 语句将暂存表中的行复制到目标表。

此方法仅可供部分复制使用,且仅在明确指定时才可使用。

键列为非唯一键时,此方法可提高删除性能。

由于 staging_to_target 元素的功能对于各个表有效,因此需要指定 staging_to_target 功能应用到的表,如以下示例所示。

<database selection="unselected">
	<name>srcDatabase</name>
	<table selection="included">
		<name>srcTable</name>
		<sql_where_clause>
			<![CDATA[WHERE colA > 100]]>
		</sql_where_clause>
		<key_columns>
 		<key_column>colA</key_column>
		</key_columns>
		<staging_to_target>insert_only</staging_to_target>
	</table>
</database>