【问题标题】:Using lookup list in Teradata (Using Teradata SQL Assistant)在 Teradata 中使用查找列表(使用 Teradata SQL 助手)
【发布时间】:2017-07-19 15:09:14
【问题描述】:

我是 Teradata 的新手。我有一个包含数百万条记录的表,我正在尝试使用查找列表基于子集进行查询,以提供我的 where 子句。
我的查找列表包含数千条记录。

在 SQL 助手中,这是我尝试过的:

SELECT  T.*
FROM a_balance T
JOIN
    OPENROWSET (
             BULK 'c:\myfile.txt',
             FORMATFILE = 'c:\myfileformat.txt'
    ) B ON T.accountID  = B.accountID

您会建议在 Teradata SQL 助手中做什么?

【问题讨论】:

  • 尝试将数据导入表格。
  • 我没有数据库的写权限。
  • 您不需要对与 a_balance 表相同的数据库进行写访问。在任何数据库中请求写访问权。

标签: sql external teradata


【解决方案1】:

正如@denoeth 建议的那样 -
您可以创建一个volatile表。
(我仍然建议你要求一个临时/游乐场数据库)

挥发性
...定义是一个易失性表保留在 仅在定义它的会话期间内存。 空间使用量计入登录用户假脱机空间。因为易挥发 表对于创建它们的会话是私有的,系统确实 不检查创建、访问、修改和删除权限。一种 单个会话最多可以实现 1,000 个易失性表。

SQL 数据定义语言语法和示例 15.10 版 B035-1144-151K 2015 年 6 月


使用 Teradata SQL 助手导入
(适用于相对较小的数据集)

“工具”->“选项”->“导入”

set/unset "忽略导入文件中的第一条记录(Skip Header)"
将“简单导入的最大批量大小”设置为 999

create volatile set table accounts (accountID int) 
unique primary index (accountID) 
on commit preserve rows
;

“文件”->“导入数据”

insert into accounts (accountID) values (?);

“文件”->“导入数据”(取消选择)

【讨论】:

  • 当然,这也可以在没有使用易失性表的创建表权限的情况下工作 :-)
  • @denoeth - Touché :-)
  • 最好添加 ON COMMIT PRESERVE ROWS,大多数客户运行 Teradata 模式会话 :-) 并切换到 SET 以避免重复行错误。
  • @dnoeth - SET 表是魔鬼 :-)
  • @dnoeth - P.s.感谢您的课程 :-) 我错过了(非)特权方面
猜你喜欢
  • 2020-12-07
  • 2013-10-13
  • 1970-01-01
  • 2015-10-26
  • 2018-03-11
  • 2020-01-16
  • 2016-05-10
  • 2023-03-15
  • 2019-01-29
相关资源
最近更新 更多