I have CSV files coming through some third parties and sometimes it comes to empty i.e. only with headers and no data. Can you suggest how I can handle such files?
Hi @amit.saroha ,
You mean you want those files out? Then I can suggest you check the checkbox ‘ignore empty stream’.
Because it will write those files to the error view (both an empty binary stream and a binary stream with CSV headers only).
You can find the explanation also in the documentation here.
I don’t want to error out the pipeline actually.
It doesn’t go out of the pipeline if you don’t want to.
Example below: the csv parser his error data is set to ‘route error data to error view’. Then a error output will be showed above the parser after that you can define what to do with the error map the right fields and sent an e-mail for example.
If this solution doesn’t help you there is an option 2:
- Put a router snap after the csv parser and check if one field of the headers does contain data or not and then route it to an output.
If you don’t want those empty files use a filter snap with a condition that a field is not null and then you only get the filled snaps.
@JensDeveloper - Thank you, but if I do as you suggested it will create an issue with the insert statement, right? How I can pass “S” in the last mapper in both cases when I have data inserted or not inserted.
Why should it create an issue because then you only have the files with filed data to insert right ?
I can’t follow what your saying. You mean Succes after the last oracle insert? Or what do you mean?
Thank you @JensDeveloper. I think option 2 might work for me. Could you suggest how to do it, please?
Hi @amit.saroha ,
Below is the attachement of the pipeline. It’s a file reader with csv parser and router. Only use the csv parser and router.
Explanation CSV parer:
uncheck the checkbox ‘ignore empty stream’ - check containts headers.
The first expression will return true if the input data is not empty ( it will output the input data to the first output view ), and the second expression will simply return
true and will output the data on the second output view. With the
First match option checked, only the first expression that returns true will be evaluated to the output even if there are more expressions that return true.
EBS_PERSONINFO_202207060218.csv.txt (445 Bytes)
I tested with the uploaded file but it didn’t return anything in any of router output.