In a channel I have a Source which is a Channel Reader and which receives 13 rows of data from a SQL database. I have a Destination which is a File Writer which needs to create a single csv file but is creating 13 separate csv files using the following JavaScript step in the Source. How do I update the code or the configuration to create a single csv file?
const delimiter = ',';
const newLine = '\r\n';
var outputResultStr = new java.lang.StringBuilder();
var outputFileName = 'CSVData_' + DateUtil.getCurrentDate('yyyyMMDDHHMMSS');
outputResultStr.append('field#1Header').append(delimiter).append(
'field#2Header').append(delimiter).append(
'field#3Header').append(delimiter).append(
'field#4Header').append(delimiter).append(
'field#5Header').append(delimiter).append(
'field#6Header').append(delimiter).append(
'field#7Header').append(delimiter).append(
'field#8Header').append(delimiter).append(
'field#9Header').append(delimiter).append(
'field#10Header').append(newLine);
for each (msg['result'] in msg) {
outputResultStr.append(msg['field#1'].toString()).append(delimiter).append(
msg['field#2'].toString()).append(delimiter).append(
msg['field#3'].toString()).append(delimiter).append(
msg['field#4'].toString()).append(delimiter).append(
msg['field#5'].toString()).append(delimiter).append(
msg['field#6'].toString()).append(delimiter).append(
msg['field#7'].toString()).append(delimiter).append(
msg['field#8'].toString()).append(delimiter).append(
msg['field#9'].toString()).append(delimiter).append(
msg['field#10'].toString()).append(newLine);
}
msg = outputResultStr;
channelMap.put('final_output', outputFileName);
The file writer has an "append" mode. Your code is forcing creation of a new file name every time it is called with a new time. Just keep the same name and use append mode.
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.