将历史数据加载到teradata时态表

时间:2015-11-05 00:09:08

标签: teradata temporal temporal-database

我有一项任务是将现有SQL Server表加载到Teradata时态表。现有表是类型2表,并具有许多版本的记录。我需要将它们加载到teradata时间表中。我打算加载版本1 1st,然后逐个更新所有其他版本。 我遇到的困难是,在现有表格中,每条记录都有开始时间和结束时间。我需要在teradata时间表中更新该时间作为有效性。

1我试图插入并且插入时我无法插入结束时间少于当前时间。它报告错误为"检查约束违规"。下面是用于创建表和插入的示例代码。

我还没有测试更新,因为无法完成第一步。

CREATE multiset TABLE EDW_T.edw_Contracts_History_Test
(
    ID INTEGER,
    Validity PERIOD(TIMESTAMP(3)) NOT NULL AS VALIDTIME
);

insert into EDW_T.edw_Contracts_History_Test(id,Validity) values(
1,period(cast('1996-01-20 05.00.00.000' as TIMESTAMP(3)), cast('2016-06-23 21.52.20.000' as TIMESTAMP(3))))
--this pass as 2016 is greater than current date
insert into EDW_T.edw_Contracts_History_Test(id,Validity) values(
1,period(cast('1996-01-20 05.00.00.000' as TIMESTAMP(3)), cast('2015-06-23 21.52.20.000' as TIMESTAMP(3))))
--This fails as i m trying to give end time less than current date.

是否有结束时间低于当前日期。任何方式来禁用此约束的时间,然后启用。

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:1)

要插入历史记录行,您应该使用Sequnce Valid Time Modifier ...

例如:

SEQUENCED VALIDTIME
insert into EDW_T.edw_Contracts_History_Test(id,Validity) values(
1,period(cast('1996-01-20 05.00.00.000' as TIMESTAMP(3)), cast('2015-06-23 21.52.20.000' as TIMESTAMP(3))));