Introduction to csv-stream
The csv-stream
library is a powerful tool for handling and processing CSV data streams in Node.js. With its simple API and efficient performance, it provides support for parsing large CSV files with ease. This library can be particularly useful for projects that require real-time data processing or handling of large datasets.
Installing csv-stream
npm install csv-stream
Basic Usage
const csvStream = require('csv-stream');
const fs = require('fs');
// Create a read stream from a file
const readStream = fs.createReadStream('path/to/your.csv');
// Initialize csv-stream parser
const csvParser = csvStream.createStream();
// Pipe the read stream into the parser
readStream.pipe(csvParser).on('data', (data) => {
console.log(data);
});
Advanced API Examples
Handling Errors
readStream.pipe(csvParser)
.on('data', (data) => {
console.log(data);
})
.on('error', (error) => {
console.error('Error:', error.message);
});
Transforming Data
const transformStream = csvStream.createStream({
transformRow: (row, callback) => {
row.newColumn = 'transformed value';
callback(null, row);
}
});
readStream.pipe(transformStream).on('data', (data) => {
console.log(data);
});
Full Application Example
const csvStream = require('csv-stream');
const fs = require('fs');
// Create a read stream from a file
const readStream = fs.createReadStream('path/to/your.csv');
// Create a csv-stream parser with a transformation function
const csvParser = csvStream.createStream({
transformRow: (row, callback) => {
row.newColumn = row.oldColumn.toUpperCase();
callback(null, row);
}
});
// Pipe the read stream into the parser
readStream.pipe(csvParser)
.on('data', (data) => {
console.log('Transformed Row:', data);
})
.on('end', () => {
console.log('CSV file successfully processed');
})
.on('error', (error) => {
console.error('Error:', error.message);
});
Conclusion
The csv-stream
library for Node.js is an excellent choice for developers looking to efficiently handle and process CSV data streams. Whether you are working with large datasets or require real-time processing, the provided APIs offer robust solutions for a variety of needs.
Hash: e37c3646ce4243fb8e7d5e25b21598c729cc59862c608821580b11b15fe193a0