【问题标题】:Fastload Error with Decimal: 2679十进制快速加载错误:2679
【发布时间】:2024-01-07 20:25:01
【问题描述】:

我正在尝试快速加载一些数据。第二列应被视为小数,但是当我尝试加载数据时,我不断收到 2679 个错误字符错误。关于发生了什么有什么建议吗?

#data
29499512266332107004116346230154901061,22.40
79270112045695798581952128836258811725,2.31
79270112045695798581952128836258811725,0.47
79270112045695798581952128836258811725,3.10
79270112045695798581952128836258811725,1.14


#fastload 
sessions 16;
SLEEP 10;
TENACITY 2;

.LOGON s/u,p;

DROP TABLE db.table;
DROP TABLE db.table_ERR1;
DROP TABLE db.table_ERR2;


create table db.table(
    id varchar(100),
    tos dec(7,2)) no primary index;


BEGIN LOADING
   db.table
    ERRORFILES
     db.table_ERR1,
     db.table_ERR2
     CHECKPOINT 500000 ;

SET record vartext "," NOSTOP;

DEFINE
id (varchar(100)),
tos (VARCHAR(15))


 FILE=  upload.txt;

INSERT INTO db.table
VALUES
(
:id,
:tos
);


END LOADING;
LOGOFF;
.QUIT;

【问题讨论】:

  • 日志表没有告诉你错误发生在哪一行吗?
  • 它发生在所有行上。
  • 您有什么理由将tos 定义为varchar?我现在无法访问 Fastload,但我认为您需要将 TOS 列定义为与目标表中相同的列,或者将其转换为插入语句::tos (decimal(7,2)
  • 不,我很确定你必须在 fastload 中定义为 varchar。
  • 所以,我想通了。我被快速加载的数据来自一个 hadoop 流式作业,并且在行尾附加了一个选项卡。删除标签后,一切正常。

标签: sql decimal teradata


【解决方案1】:

在您的 Fastload 中,您将第二列定义为 varchar。您想在 tos 中插入十进制值,但在 DEFINE 中将其声明为 varchar。所以把它改成十进制,然后尝试执行。

【讨论】:

    【解决方案2】:

    您可能需要在 andrew 提到的插入值中尝试 teradata 样式类型转换。

    【讨论】:

      最近更新 更多