1

DML的输入文件应该是什么数据,如 1,2,34,43,66

当我把下面的问题放在下面时我面临的问题DML

record decimal(",") val; end;

是最后一个数字没有被正确读取。

有没有办法只使用输入文件组件来读取它。

4

3 回答 3

0

您可以尝试以下 DML,我想它应该可以工作:

record
decimal(",") val1;
decimal(",") val2;
decimal(",") val3;
decimal(",") val4;
decimal(",") val5;
string("\n") newline = NULL;
end
于 2020-01-14T20:04:06.473 回答
0

我想您想将每个数字作为记录读取。问题是:数据与您的愿望不兼容,最后一个数字没有用“,”分隔。

如果您无法更改数据,您可以读取单个记录中的所有输入,使用:

record
 string("\n") val;
end

然后使用规范化组件拆分记录:

out :: length(in) =
begin
  out :: length_of(string_split(in.val, ","));
end;

out :: normalize(in, index) =
begin
   let string(";")[5] my_vec;
   my_vec =  string_split(in.val, ",");
   out.val :: decimal_lpad( my_vec[index], 5 );
end;

(可能有更好的解决方案,我仍然不是专家,但还没有答案)

于 2020-02-19T14:27:31.840 回答
0

您只描述了一个数字字段,但您有 5 个字段

“new line”(新记录)也应该被描述

你在使用 BRE 吗?你可以DML在 BRE 中创建

于 2019-12-22T08:28:29.793 回答