Last Imported Line Is Empty 输入流进度

Last Imported Line Is Empty Input Stream Progress

我制作了一个脚本来导入 CSV 文件。

它工作完美,但是当我将它导入临时文件 table 时,临时文件 table 中的最后一条记录是空的。我已经对 CSV 文件进行了三次检查,它不包含任何空行。

这是我的代码:

INPUT STREAM sEaImport FROM VALUE(cCsvEaFileLocation).
/* Skip first line to remove the headers */
IMPORT STREAM sEaImport DELIMITER ";" vcline.
REPEAT:
    CREATE ttEa.
    IMPORT STREAM sEaImport DELIMITER ";" ttEa.
END.
INPUT CLOSE.

FOR EACH ttEa:
    DISPLAY ttEa.
END. 

当我在 REPEAT 块之外显示 ttEa 时,我得到一个空记录,如下所示:

当我在 REPEAT 块中显示 ttEa 时,我没有得到空记录。

有人可以帮我吗?

使用这个仍然给我相同的结果:

INPUT STREAM sEaImport FROM VALUE(cCsvEaFileLocation).
/* Skip first line to remove the headers */
IMPORT STREAM sEaImport UNFORMATTED vcline.
REPEAT on error undo,leave on endkey undo,leave:
    CREATE ttEa .
    IMPORT STREAM sEaImport DELIMITER ";" ttEa. 
END.

INPUT STREAM sEaImport CLOSE.  

转到 CSV 文件的末尾并按 ENTER 键,保存它,再次 运行。 Progress 的一个已知错误是不导入最后一行,因此请确保它是空白行。如果您的文件末尾没有回车 return,您将丢失最后一条记录,这可能就是这里发生的情况。

编辑:因为你提到问题是最后的空记录,而不是不导入最后一个,我向重复添加了一个事务,在我的测试中,空记录消失了。

repeat transaction:
    create ttEa.
    import stream sEaImport delimiter ';' ttEa.

end.

确保您的临时文件 table 上没有 NO-UNDO 语句。然后将 REPEAT 语句更改为 REPEAT TRANSACTION。最后一次迭代将尝试创建 ttEa 记录但失败了。由于它现在处于事务中,创建将被撤消(这就是为什么你不能在临时 table 上有 NO-UNDO 的原因)并且空白记录将消失。