对于具有 1,2,34,43,66 等数据的输入文件,我的DML
应该是什么
当我把下面DML
时我面临的问题
record
decimal(",") val;
end;
是最后一个数字没有被正确读取。
有没有办法仅使用输入文件组件来读取此内容。
您只描述了一个数值字段,但您有 5 个字段
"新行"(新记录(也应该描述
您是否正在使用 BRE ? 您可以在 BRE 中创建DML
您可以尝试以下DML,我想它应该可以工作:
record
decimal(",") val1;
decimal(",") val2;
decimal(",") val3;
decimal(",") val4;
decimal(",") val5;
string("n") newline = NULL;
end
我想你想把每个数字都读成一条记录。问题是:数据不符合你的愿望,最后一个数字不是用","分隔的。
如果无法更改数据,则可以使用以下方法读取单个记录中的所有输入:
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;
(可能有更好的解决方案,我仍然不是专家,但还没有答案(