关于复制时间表 - 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

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

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

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,Data Mover 将在复制时间表时自动选择 Teradata DSA。如果 DSA 不可用,则会选择 Teradata PT update 运算符。如果强制使用 Teradata PT,则会选择 Teradata PT update 运算符作为复制方法。在使用 DSA 复制整个数据库时,源系统中的所有时间表都会复制到目标系统。复制时间表时,可以在目标系统中重命名时间表或重新指定时间表的位置,或者对时间表执行部分复制。

复制时间表时,非顺序查询会选择需要复制到目标系统的源行。例如:
<NONSEQUENCED VALIDTIME> <AND> <NONSEQUENCED TRANSACTIONTIME> SELECT * FROM Source_Table; 
非顺序查询不会为时间列赋予任何特殊语义,而是像对待任何其他常规列那样对待这些列。因此,所有的当前行、历史行和未来行(无论处于开放还是关闭状态)都将复制到目标系统。

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

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