【问题标题】:Teradata volatile table setting field too largeTeradata 易失性表设置字段太大
【发布时间】:2017-01-31 12:10:18
【问题描述】:

我正在尝试重新运行旧查询并且遇到了行大小问题。经过一些变通办法后,除了两个值之外,我已经将所有值添加到我需要的表中。每当我尝试添加最后两个字段时,我都会得到某种形式的“这将使最大行长度太长”(取决于我是在运行直接查询还是包含CREATE VOLATILE TABLE ...等等。围绕查询。

暂且不说数据没有理由超过最大行长度(我应该提取与 2016 年 2 月该脚本最后一次成功运行时完全相同的数据),我唯一需要做的就是'能够看到可能导致问题的是,当我运行HELP TABLE 时,两个电话号码字段以及保存地址类型的字段显示最大长度为 16000。电话号码都只有 10 个字符(如预期的那样),地址类型最多只有 4 个字符。

所以我正在寻求帮助的是:

  1. 什么会导致 Teradata 抛出关于行长度太长的错误,除了行长度实际上太长(就像我说它应该是相同的数据并且脚本之前工作过,所以我不是 100% 相信不只是服务器上的东西)
  2. 这 3 个字段的最大长度是否可能是候选者?如果是这样,我如何强制它们变小(再次,当我在值上运行 LENGTH 时,没有任何返回为 > 10,所以 16000 中的 15990 被浪费了)?为什么在这次运行中将字段设置为比上一次运行时更大?
  3. 如果最大长度不是问题,我可以做些什么来帮助诊断问题?

作为参考,我被卡住的脚本部分如下

CREATE MULTISET VOLATILE TABLE
--DROP TABLE
PCP_DATA_2
AS (
SELECT DISTINCT
    PA.Prov_Nbr
    , PA.NPI
    , OREPLACE(UPPER(TRIM(SDA_MAP.State_Defined_SDA)), ' TEXAS', '') AS SDA
    , PA."First/Inst Name"
    , PA.Last_Name
    , PA.Degree
    , PA.Spec_Code
    , PA.Spec_Desc
    , PA.Hat_Code
    , PA.Hat_Desc
    , PA.Group_Nbr
    , PA.Group_Name
    , PA.Address1
    , PA.Address2
    , PA.City
    , PA.State
    , PA.Zip
    , UPPER(TRIM(SDA_MAP.STD_County_Name)) AS County
    , PA.Primary_Phone_Nbr
    , PA.Secondary_Phone_Nbr
    , PA.Address_Type
    , PA.Affstat_Code
    , PA.AfterHrs
    , PA.Affiliation_ID

FROM
    PCP_DATA AS PA

    LEFT JOIN V_REF_MD_CITY_COUNTY_SDA_CRSWK AS SDA_MAP
        ON PA.Zip = SDA_MAP.USPS_ZipCode
)
WITH DATA PRIMARY INDEX (Prov_Nbr)
ON COMMIT PRESERVE ROWS;

我知道这个问题很笼统,但 Google 并没有提供任何有用的信息,而且我小组中的其他分析师也和我一样难过。

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    如果此查询在您为会话设置不同的字符集之前有效。

    当您收到 9804: Response Row size 或 Constant Row size overflow 时,通常是由于会话使用 UTF-8 或 UTF-16 作为字符集。

    这些列可能被定义为 LATIN(即每个字符一个字节),但对于 UTF-16,大小是两倍,对于 UTF-8,它是三倍。结果行的最大大小为 64k 并且 3 * 16000 * (2|3) 明显超过该大小(这是基于定义的大小,而不是实际大小)。

    将过大的列转换为适当的大小,这也提高了 DISTINCT 的性能,它将 VarChars 扩展为 Chars。

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2013-11-29
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 2016-02-22
      相关资源
      最近更新 更多