简体   繁体   中英

Last Imported Line Is Empty Input Stream Progress

I have made a script that does an import of an CSV file.

It work perfect however when I import it into a temp table the last record in my temp table is an empty one. I've tripled checked the CSV and it doesn't contain any empty lines.

This is my code:

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. 

When I display the ttEa outside of the REPEAT block I get an empty record like this:

在此处输入图片说明

When I display ttEa inside the REPEAT block I don't get an empty record.

Can somebody please help me?

Using this still gives me the same result:

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.  

Make sure your temp table does NOT have the NO-UNDO statement on it. Then change the REPEAT statement to REPEAT TRANSACTION . The last iteration will try to create a ttEa record but fail. Since it's now in a transaction, the create will be undone (which is why you can't have NO-UNDO on the temp table) and the blank record will be gone.

Go to the end of your CSV file and hit ENTER, save it, run again. It's a known bug for Progress to not import the last line, so make sure it's a blank one. If your file doesn't have a carriage return at the end, you're going to lose the last record, which is probably what's happening here.

Edit: Since you mentioned the problem was the empty record at the very end, rather than not importing the last, I added a transaction to the repeat and in my tests, the null record is gone.

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

end.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM