जावास्क्रिप्ट (Node.js) में CSV के साथ कार्य: पूर्ण गाइड
CSV (कॉमा-सेपरेटेड वैल्यूज़) सारणीबद्ध डेटा के आदान-प्रदान के लिए सबसे लोकप्रिय प्रारूपों में से एक है। Node.js इकोसिस्टम में CSV फ़ाइलों के पार्सिंग, जनरेशन और प्रसंस्करण के लिए कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में हम मुख्य टूल्स, उनकी स्थापना, उपयोग के उदाहरण और सर्वोत्तम प्रथाओं पर विचार करेंगे।
Node.js में CSV के साथ कार्य के लिए लोकप्रिय लाइब्रेरीज़
जावास्क्रिप्ट (Node.js) में CSV के साथ कार्य के लिए अक्सर तीन लाइब्रेरीज़ का उपयोग किया जाता है:
- csv-parser — तेज़ स्ट्रीमिंग पार्सर, जो स्ट्रीमिंग मोड में काम करता है
- csv-stringify — जावास्क्रिप्ट ऑब्जेक्ट या ऐरे से CSV जनरेटर
- fast-csv — बहुउद्देशीय लाइब्रेरी, जो पार्सिंग और जनरेशन को जोड़ती है
लाइब्रेरीज़ की स्थापना
आवश्यक पैकेज स्थापित करने के लिए npm का उपयोग करें:
npm install csv-parser csv-stringify fast-csvcsv-parser के साथ CSV पार्सिंग
लाइब्रेरी csv-parser स्ट्रीमिंग मोड में काम करती है, जो फ़ाइलों को पूरी तरह से मेमोरी में लोड किए बिना किसी भी आकार की फ़ाइलों को प्रोसेस करने की अनुमति देती है।
उदाहरण: CSV फ़ाइल पढ़ना
const fs = require('fs');const csv = require('csv-parser');
const results = [];
fs.createReadStream('data.csv') .pipe(csv()) .on('data', (row) => { results.push(row); }) .on('end', () => { console.log('CSV फ़ाइल सफलतापूर्वक प्रोसेस हुई'); console.log('पहली पंक्ति:', results[0]); });डिफ़ॉल्ट रूप से csv-parser फ़ाइल की पहली पंक्ति को हेडर के रूप में उपयोग करता है और संबंधित कुंजियों के साथ ऑब्जेक्ट लौटाता है।
csv-stringify के साथ CSV जनरेशन
लाइब्रेरी csv-stringify जावास्क्रिप्ट ऐरे या ऑब्जेक्ट से CSV स्ट्रिंग बनाने की अनुमति देती है।
उदाहरण: ऑब्जेक्ट से CSV बनाना
const { stringify } = require('csv-stringify');const fs = require('fs');
const data = [ { name: 'इवान', age: 25, city: 'मॉस्को' }, { name: 'मारिया', age: 30, city: 'सेंट पीटर्सबर्ग' }, { name: 'अलेक्सेई', age: 28, city: 'कज़ान' }];
const writableStream = fs.createWriteStream('output.csv');
const stringifier = stringify({ header: true, columns: ['name', 'age', 'city']});
stringifier.pipe(writableStream);data.forEach(row => stringifier.write(row));stringifier.end();बहुउद्देशीय समाधान: fast-csv
fast-csv CSV के पार्सिंग और जनरेशन दोनों प्रदान करता है, साथ ही विभिन्न प्रारूपों (TSV, कस्टम विभाजक) का समर्थन करता है।
उदाहरण: fast-csv के साथ CSV पार्सिंग
const fs = require('fs');const csv = require('@fast-csv/parse');
const rows = [];
fs.createReadStream('data.csv') .pipe(csv.parse({ headers: true })) .on('error', error => console.error(error)) .on('data', row => rows.push(row)) .on('end', (rowCount) => { console.log(`${rowCount} पंक्तियाँ प्रोसेस हुईं`); console.log('डेटा:', rows); });उदाहरण: fast-csv के साथ CSV लिखना
const fs = require('fs');const csv = require('@fast-csv/format');
const data = [ ['नाम', 'आयु', 'शहर'], ['इवान', '25', 'मॉस्को'], ['मारिया', '30', 'सेंट पीटर्सबर्ग']];
const ws = fs.createWriteStream('output.csv');csv.write(data, { headers: true }).pipe(ws);बड़ी फ़ाइलों और प्रदर्शन के साथ कार्य
100 MB से अधिक आकार की CSV फ़ाइलों के साथ कार्य करते समय स्ट्रीमिंग प्रोसेसिंग का उपयोग करने की अनुशंसा की जाती है। तीनों समीक्षित लाइब्रेरीज़ स्ट्रीम का समर्थन करती हैं।
उदाहरण: बड़ी CSV को पंक्ति दर पंक्ति प्रोसेस करना
const fs = require('fs');const csv = require('csv-parser');
let rowCount = 0;
fs.createReadStream('large-file.csv') .pipe(csv()) .on('data', (row) => { rowC