16.20 - 关于复制时间表 - Teradata Data Mover

Teradata® Data Mover 用户指南

Product
Teradata Data Mover
Release Number
16.20
Published
2021 年 11 月
Content Type
用户指南
Publication ID
B035-4101-107K-CHS
Language
中文 (简体)

在常规数据库系统中,表中存储的数据被认为在当前有效。因为常规表限于存储当前的现实快照,而不保留过去存在或未来将会有效的数据。使用时间数据库,您可以通过提供时间数据类型和存储与过去、现在和未来相关的信息,存储与时间点相关的数据。例如,时间数据库系统中的表可以存储关于当年每月月末库存水平的数据。通过将数据的时间维度存储在表中,您可以查询历史及未来数据趋势。

时间表包含以下一项或两项:
时间 说明

ValidTime

基于现实世界、使用某个事实(数据行)在现实世界中为 true(有效)的期间进行建模的数据。表中的 DATE 或 TIMESTAMP 列的值定义了得知某个事实有效的时间。

TransactionTime

跨某个期间的数据,该期间开始于某个事实(数据行)被记录(提交)到数据库之时,结束于该事实经过更新、回滚或删除操作而被取代之时。表中的 TIMESTAMP 列的值定义了事实的事务时间。

您可以将时间表、关联的联接索引和哈希索引以及触发器复制到目标系统。要将时间表从源系统复制到目标系统,必须对目标数据库具有 NONTEMPORAL 权限。在以下 XML 示例中,Employee_BT_1 中的时间表复制到目标系统︰
<table selection = "included">
 <name>Employee_BT_1</name>
  <target_database>
  	<name>MyDatabase</name>
  </target_database>
</table>
如果未指定 force_utility 且可以使用 Teradata ARC 或 Teradata DSA,Data Mover 将在复制时间表时自动选择 Teradata DSA。如果 Teradata DSA 不可用,则会选择 Teradata ARC。如果无法使用 Teradata ARC,缺省将选择 Teradata PT API UPDATE 运算符作为复制实用程序。如果您将 Teradata PT API 指定为 force_utility 的值,则将选择 Teradata PT API UPDATE 作为复制实用程序。使用 ARC 或 DSA 复制整个数据库时,会将源系统中的所有时间表复制到目标系统。复制时,可以在目标系统中重命名时间表或重新指定时间表的位置,或对时间表执行部分表复制。
复制时间表时,非顺序查询会选择需要复制到目标系统的源行。例如:
<NONSEQUENCED VALIDTIME> <AND> <NONSEQUENCED TRANSACTIONTIME> SELECT * FROM Source_Table; 
非顺序查询不会为时间列赋予任何特殊语义,而是像对待任何其他常规列那样对待这些列。因此,所有的当前行、历史行和未来行(无论处于开放还是关闭状态)都将复制到目标系统。

时间表的主键约束通过系统定义的联接索引来维护。创建表时,Teradata Database 会自动生成此系统定义的联接索引。复制时间表时,无需单独复制系统定义的联接索引。ARC 和 DSA 均复制系统定义的联接索引设置。对于其他复制方法,如果表已经存在,则表明系统定义的联接索引已存在于目标系统上;如果表是作为作业的一部分创建的,系统则会自动生成该索引。

复制时间表时,以下情形会导致出错︰
  • allowTPtLoadForMultiset 属性未设置为 true 时,使用 TPT API LOAD 运算符进行复制。
  • 将时间表及其系统定义的联接索引作为单独项目进行复制,而不是只复制时间表。