How to use CSV Parser to read multiple records in single row


I have a csv file ‘|’ separated which has records like below.

123456|61|eng |01|aabc|test|16|Long|,|01|aabc|test1|Regular|Short||
112569|61|eng |01|vfbc|test3|16|XL|

how to read both records as 1st record has 2 details in a single row separated by comma. CSV parser is giving below error-

“The CSV record has more columns than data, Resolution: Please provide valid CSV data at line 7 or route it to the error view”

please suggest

Long way but works.

Use this file
sample.txt (102 Bytes)

csv_2017_11_22.slp (8.8 KB)


Thanks for providing the solution, the pipeline solves the concern of splitting a record of csv however my csv also has a single line record and the pipeline shared by you its giving error when trying to execute with that file.I have attached source file, kindly help in getting it resolved.

sample.txt (155 Bytes)

Failure: Error parsing at line 2, Reason: Cannot complete CSV data parsing, Resolution: Please provide valid CSV data at line 1 or route it to the error view


Can anyone help on it , I need it badly to solve my pending issue.

if you observe, there is a blank line character in your file.

“|01|aabc|test1|Regular|Short||112569|61|eng |01|vfbc|test3|16|XL|
\n9876540|51|en_in |51|Test2|size|minus|51|1X||||||||”

What is your expectation?

I want my pipeline to read both the records as that is how i will get my csv file.Yes their can be blank line character in file. But my concern here is m not able to read both the records as csv parser takes first line and set no of columns but when it comes to next row the columns get decreased and it failed. So is their any way we can read both the rows by any snap.

You’re most likely going to need to use a Script snap. The CSV parser (as I understand it), expects an exact number of columns per every record.

Presuming (yet without knowing) the data definition of your input, you might potentially use Naveen’s option combined with a Mapper snap and Expression Language to pad the right-hand side record with pipes to resize all delimited records with the same number of delimeters. Otherwise, use script to parse and create the exact output that you need.