How to handle CSV file with header only

Hi,
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.

Regards

Jens

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.

Option 3:
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.

Regards

Jens

1 Like

@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.

Router explanation.
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.

CsvFile_Validation_V1.0_2022_07_07.slp (5.1 KB)

Regards

Jens

EBS_PERSONINFO_202207060218.csv.txt (445 Bytes)

I tested with the uploaded file but it didn’t return anything in any of router output.

That is because your file contains an extension .csv but you saved it as .txt

image

image
So after saving it as csv it goes to the no data output

Let me know if it works