我制作了一个导入CSV文件的脚本。
它工作正常但是当我将它导入临时表时,临时表中的最后一条记录是空的。我已经三倍检查了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.
答案 0 :(得分:2)
确保您的临时表上没有NO-UNDO
语句。然后将REPEAT
语句更改为REPEAT TRANSACTION
。最后一次迭代将尝试创建ttEa记录但失败。由于它现在处于事务中,因此创建将被撤消(这就是为什么临时表上不能有NO-UNDO
)并且空白记录将消失。
答案 1 :(得分:1)
转到CSV文件的末尾并按Enter,保存,再次运行。对于Progress来说,导入最后一行是一个已知的错误,因此请确保它是空白的。如果你的文件最后没有回车符,你将丢失最后一条记录,这可能就是这里发生的事情。
编辑:既然你提到问题是最后的空记录,而不是导入最后一个,我在重复中添加了一个事务,在我的测试中,空记录消失了。
repeat transaction:
create ttEa.
import stream sEaImport delimiter ';' ttEa.
end.