【问题标题】:Convert NULL to Blank TPT Fast Load将 NULL 转换为空白 TPT 快速加载
【发布时间】:2013-12-31 12:48:17
【问题描述】:
Insert into emp values 
(:FNAME ,.......

上面来自 TPT 的示例代码工作正常。 我想在加载时将平面文件中的空值转换为空白

insert into emp values ( COALESCE(:Fname,' '),....     -- Throws ERROR 

TPT_INFRA:TPT04046:错误:作业脚本文件“tpscript4.txt”的第 193 行:相邻 t 引用的字符串必须由 连接运算符:'||'。 作业脚本预处理失败。

insert into emp Values ( case when :Fname is null then ' ' else :Fname End,... --Throws Error

Teradata Parallel Transporter 版本 13.10.00.02 TPT_INFRA:TPT04046:错误:作业脚本文件“tpscript4.txt”的第 191 行:相邻 t 引用的字符串必须由 连接运算符:'||'。 作业脚本预处理失败。 作业以状态 8 终止。

当在 Select oerator for fastload 中使用 Case when:

TO OPERATOR (UPDATE_OPERATOR[2]) 
SELECT  case when FNAME is null then ' ' else FNAME,LNAME,....
FROM OPERATOR (FILE_READER[2]);

错误: TPT_INFRA:作业脚本文件“tpscript4.txt”的第 249 行或附近的语法错误: TPT_INFRA:在“SELECT”中缺少 SEMICOL_ 规则:作业定义正文 由于错误,编译失败。未生成执行计划。 作业脚本编译失败。 作业以状态 8 终止。

注意:如果没有选择它的情况,它工作正常,

APPLY('insert into emp values ( COALESCE(:Fname,'' ''),....')  Worked with Mload

和 SELECT CASE WHEN Fname IS NULL THEN ' ' ELSE Fname END AS Fname,... FROM OPERATOR 与 Fload 合作

【问题讨论】:

    标签: teradata


    【解决方案1】:

    您没有指定返回哪个错误,我认为它与单引号有关。您的 INSERT 可能在 APPLY('INSERT ....;') 内,您可以尝试使用两个单引号来获取字符串中的一个引号:

    APPLY('insert into emp values ( COALESCE(:Fname,'' ''),....') 
    

    或者在 SELECT 中执行(此处不支持 COALESCE):

    SELECT
       CASE WHEN Fname IS NULL THEN ' ' ELSE Fname END AS Fname,
       ...
    FROM OPERATOR
    

    【讨论】:

    • 添加单引号:UPDATE_OPERATOR:进入采集阶段 UPDATE_OPERATOR:TPT10508:RDBMS 错误 3618:Fast Load Insert,列 Fname 中不允许表达式。 UPDATE_OPERATOR:断开会话
    • "Expression not allowed in Fast Load Insert" = 您不能在 FastLoad 协议的 INSERT 中使用表达式。改用 UPDATE 操作符,或者在 SELECT 中进行操作,如上所示。
    • 在以下情况下选择案例:Teradata Parallel Transporter 版本 13.10.00.02 TPT_INFRA:作业脚本文件 'tpscript4.txt' 的第 249 行或附近的语法错误:TPT_INFRA:在“选择”时,规则中缺少 SEMICOL_:作业由于错误,定义正文编译失败。未生成执行计划。
    • dnoeth ,单引号适用于 Mload 。案例不适用于 Fload 吗?
    • 当您在 OPERATOR Select 中使用 CASE 时,它应该可以工作,我只是忘记了别名(已编辑)。如果您仍然收到错误,您应该发布工作定义的相关部分。 --- 我刚刚注意到您的 CASE 中没有 END,应该是 SELECT case when FNAME is null then ' ' else FNAME END as FName,LNAME
    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2014-11-20
    相关资源
    最近更新 更多