【问题标题】:How to transfer data between databases with SELECT statement in Teradata如何在 Teradata 中使用 SELECT 语句在数据库之间传输数据
【发布时间】:2013-01-28 11:03:11
【问题描述】:

所以我被这个 Teradata 问题困住了,我正在向社区寻求建议,因为我是 TD 平台的新手。我目前正在使用 Teradata 数据仓库,并且有一个有趣的任务要解决。目前,我们将信息存储在实时生产数据库中,但希望在使用 FastExport 导出文件之前将表暂存到另一个数据库中。基本上,我们希望将我们的表移动到数据库中以获取快速快照。

我一直在探索不同的解决方案,但不确定如何进行。我需要能够自动从 Teradata 中的一个数据库到另一个数据库的创建表过程。棘手的部分是我想使用 WHERE 子句从源表中创建许多表。例如,我有一个事务表,并且想逐月对某个日期范围内的事务表进行快照。这意味着原始表 Transaction 将被拆分为许多表,例如 Transaction_May2001、Transaction_June2001、Transaction_July2001 等等。

谢谢

【问题讨论】:

  • 您是否有权访问随 DBS 分发的任何客户端实用程序? TPT 是一个专门的实用程序,可以利用 FastExport/FastLoad 协议在两个系统之间移动数据。
  • 我的建议是停止你正在做的事情。这是个坏主意。它既没有标准化,也没有星型模式。这会使查询变得非常困难。
  • @ryanbwork Ryan,我确实可以访问 TTU,其中包括 TPT。您是否可以提供一个示例脚本来更好地了解 TPT 的工作原理?这是我最初的想法,但由于缺乏针对此特定场景的材料而陷入困境。
  • @JeffreDodd 你有什么版本?您能否更新您的 SO 帐户以包含您的电子邮件地址,我将通过示例脚本发送。
  • @Ryanbwork 不知道为什么我的电子邮件没有公开。我为接下来的 24 小时设置了一个融化的邮件地址。 7FI8uR7anpxd@meltmail.com。感谢您的脚本!

标签: sql teradata


【解决方案1】:

这是假设您指的是 Teradata 的同一物理安装的两个数据库。

您可以使用CREATE TABLE AS 构造来完成此操作:

CREATE TABLE {MyDB}.Transaction_May2001
AS (
SELECT *
FROM Transaction
WHERE Transaction_Date BETWEEN DATE '2001-05-01' AND '2001-05-31'
)
{UNIQUE} PRIMARY INDEX ({Same PI definition as Transaction Table}) 
WITH DATA AND STATS;

如果您忽略在 CREATE TABLE AS 中指定显式 PI,则 Teradata 将采用 SELECT 子句的第一列并将其用作新表的 PI。

否则,您可能希望使用 ryanbwork 在对您的问题的评论中建议的 Teradata 实用程序。

【讨论】:

  • 最后两行要切换: WITH DATA AND STATS {UNIQUE} PRIMARY INDEX ({Same PI definition as Transaction Table});
猜你喜欢
  • 2013-08-04
  • 2011-03-04
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
相关资源
最近更新 更多