12-26-2023 03:38 PM
Dear Experts,
I'm trying to read text files from a folder and i need to create csv file in target file location. For Example:
i have 3 .txt files in a source folder and i need to create 3 .csv files in target folder. I have tried below approach but it's failing:
Directory Browser->ForEach->FileReader->CSVParser->Mapping->CSVFormatter->FileWritter.
Also i need to name the 3 different target filenames with dateformat EX: sourcefilename_yyyyMMddHHmmss.csv
Please let me know if anyone succeeded, Please share your experience or thoughts which will help me.
Thanks in advance
01-03-2024 12:30 AM - edited 01-03-2024 12:32 AM
Normally it should work in the fashion you describe, i have never used the ForEach. But try to create a child pipeline which will be executed by a pipeline execute snap and get the source file path from the Directory browser or a file poller snap.
First pipeline would be a Directory browser -> Pipeline execute
Second pipeline would be File reader -> CSV Parser (if this is what you need) -> Mapping -> CSV formatter -> File writer
Easiest way is that you construct and send the target filename as a pipeline parameter to the second pipeline, this way you can access it from the file writer snap easily via expression _target_filename for example
Make sure to set the batch size to 1 for the pipeline execute snap, it will execute the pipeline once for each file.
Suggestion on how to construct the target filename:
$Path.match(/\/([^\/]*?)\.[^\/]*$/)[1] + "_" + Date.now().toLocaleDateTimeString({"format":"yyyyMMddHHmmss"}) + ".csv"