【问题标题】:Load Historical data to teradata temporal table将历史数据加载到 teradata 时态表
【发布时间】:2016-02-05 16:37:05
【问题描述】:

我的任务是将现有 SQL Server 表加载到 Teradata 临时表。现有表是类型 2 表,并且有许多版本的记录。我需要将它们加载到 teradata 时态表中。我计划第一次加载版本 1,然后一一更新所有其他版本。 我遇到的困难是在现有表中每条记录都有开始时间和结束时间。我需要将 teradata 时态表中的时间更新为有效性。

第一次我正在尝试插入,而插入时我无法将结束时间插入小于当前时间。它将错误报告为“检查约束违规”。下面是用于创建表和插入的示例代码。

由于无法执行第一步,我尚未测试更新。

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.

无论如何,结束时间是否小于当前日期。任何方式来禁用此约束一段时间然后启用。

请帮忙。谢谢!

【问题讨论】:

  • 使用 Sequnce VT 修饰符。

标签: teradata temporal temporal-database


【解决方案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))));

【讨论】:

  • 嗨@anwaar_hell 一次插入一行。但我必须使用 insert-select 语句插入多行。当我尝试如下陈述时,我出现了另一个错误。你能告诉我如何解决这个问题:sequenced validtime insert into EDW_T.edw_Contracts_History_Test(id,Validity) select id, period(cast('1996-01-20 05.00.00.000' as TIMESTAMP(3)), cast('2015 -06-23 21.52.20.000' as TIMESTAMP(3))) from EDW_T.edw_Contracts_History_Test --ValidTime 列名在序列插入-选择语句的列列表中无效。感谢您的帮助
  • 您好,我找到了解决方案。我们需要使用合并而不是插入选择语句。从以下链接获得帮助merge update Temporal
  • 我在下一步还有另一个问题。我有 3 个版本的记录。例如第一个 1/1/10-1/1/11。我可以使用合并插入第一个版本。第二个版本是从 1/1/11-1/1/14。如果我尝试使用非排序合并和更新有效性(周期列),则 teradata 更新第一条记录本身。也许是因为它关闭了时间功能。但我错过了历史。所以我尝试在不使用非排序的情况下进行更新。问题是查询没有在表中找到数据并说更新了 0 行。那一定是因为它只读取当前记录。有什么办法可以加载所有三个版本。
  • 这个问题在下面link进行了进一步讨论和回答
猜你喜欢
  • 2021-11-30
  • 2014-03-30
  • 2015-03-20
  • 2014-08-31
  • 1970-01-01
  • 2017-12-30
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多