PHP में CSV के साथ कार्य: डेटा पढ़ना, लिखना और प्रसंस्करण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में CSV के साथ कार्य: पूर्ण गाइड

\n\n

CSV (Comma-Separated Values) — तालिका डेटा के आदान-प्रदान के लिए सबसे लोकप्रिय प्रारूपों में से एक है। PHP में CSV के साथ कार्य करने के लिए अंतर्निहित फ़ंक्शन के साथ-साथ शक्तिशाली तृतीय-पक्ष लाइब्रेरी भी हैं। इस लेख में, हम PHP में CSV फ़ाइलों को पढ़ने, लिखने और प्रसंस्करण के सभी बुनियादी तरीकों पर चर्चा करेंगे।

\n\n

CSV के साथ कार्य करने के लिए अंतर्निहित PHP फ़ंक्शन

\n\n

PHP कई अंतर्निहित फ़ंक्शन प्रदान करता है जो अतिरिक्त लाइब्रेरी स्थापित किए बिना CSV फ़ाइलों के साथ कार्य करने की अनुमति देते हैं। इनमें से मुख्य हैं:

\n\n
    \n
  • fgetcsv() — फ़ाइल से एक पंक्ति पढ़ना और उसे एक सरणी में पार्स करना
  • \n
  • fputcsv()
  • — एक सरणी को CSV प्रारूप में फ़ाइल में लिखना
  • str_getcsv() — CSV स्ट्रिंग को सरणी में पार्स करना
\n\n

fgetcsv का उपयोग करके CSV फ़ाइल पढ़ना

\n\n

फ़ंक्शन fgetcsv() खुली फ़ाइल से एक पंक्ति पढ़ता है और इसे एक सरणी के रूप में लौटाता है। पूरी फ़ाइल पढ़ने का उदाहरण:

\n\n
<?php\n$filename = 'data.csv';\n\nif (($handle = fopen($filename, 'r')) !== false) {\n    while (($data = fgetcsv($handle, 1000, ',')) !== false) {\n        // $data — पंक्ति डेटा वाली सरणी\n        echo implode(' | ', $data) . "\\n";\n    }\n    fclose($handle);\n}\n?>
\n\n

फ़ंक्शन fgetcsv() के पैरामीटर:

\n
    \n
  • handle — फ़ाइल डिस्क्रिप्टर
  • \n
  • length — पंक्ति की अधिकतम लंबाई (आमतौर पर 0 या 1000)
  • \n
  • separator — फ़ील्ड विभाजक (डिफ़ॉल्ट रूप से अल्पविराम)
  • \n
  • enclosure — फ़ील्ड संलग्नक वर्ण (डिफ़ॉल्ट रूप से दोहरा उद्धरण चिह्न)
  • \n
  • escape — एस्केप वर्ण (डिफ़ॉल्ट रूप से बैकस्लैश)
  • \n
\n\n

CSV फ़ाइल में डेटा लिखना

\n\n

लिखने के लिए फ़ंक्शन fputcsv() का उपयोग किया जाता है। यह एक सरणी लेता है और इसे CSV स्ट्रिंग में परिवर्तित करता है:

\n\n
<?php\n$data = [\n    ['नाम', 'आयु', 'शहर'],\n    ['इवान', 25, 'मॉस्को'],\n    ['मारिया', 30, 'सेंट पीटर्सबर्ग'],\n];\n\n$filename = 'output.csv';\n$handle = fopen($filename, 'w');\n\nforeach ($data as $row) {\n    fputcsv($handle, $row, ';', '"');\n}\n\nfclose($handle);\necho "फ़ाइल $filename सफलतापूर्वक बनाई गई!";\n?>
\n\n

इस उदाहरण में, हम विभाजक के रूप में अर्धविराम (;) का उपयोग कर रहे हैं, जो अक्सर रूसी भाषा की CSV फ़ाइलों में पाया जाता है।

\n\n

बड़ी CSV फ़ाइलों का प्रसंस्करण

\n\n

बड़ी फ़ाइलों (सैकड़ों हजारों पंक्तियों) के साथ काम करते समय, पूरी फ़ाइल को मेमोरी में लोड न करना महत्वपूर्ण है। पंक्ति-दर-पंक्ति पढ़ने का उपयोग करें:

\n\n
<?php\nfunction processLargeCSV($filename) {\n    $handle = fopen($filename, 'r');\n    \n    // यदि है तो हेडर छोड़ें\n    $header = fgetcsv($handle);\n    \n    while (($row = fgetcsv($handle)) !== false) {\n        // प्रत्येक पंक्ति को प्रोसेस करें\n        $processed = array_map('trim', $row);\n        // यहाँ आपका प्रसंस्करण तर्क हो सकता है\n        yield $processed; // जनरेटर का उपयोग करें\n    }\n    \n    fclose($handle);\n}\n\n// उपयोग\nforeach (processLargeCSV('bigdata.csv') as $row) {\n    // प्रत्येक पंक्ति के साथ अलग-अलग काम करें\n    echo "प्रोसेस की गई पंक्ति: " . implode(',', $row) . "\\n";\n}\n?>
\n\n

जनरेटर (yield) का उपयोग करने से मेमोरी ओवरफ्लो के बिना किसी भी आकार की फ़ाइलों को प्रोसेस करने की अनुमति मिलती है।

\n\n

उन्नत कार्य के लिए League\\Csv लाइब्रेरी

\n\n

अधिक जटिल कार्यों के लिए, league/csv लाइब्रेरी का उपयोग करने की अनुशंसा की जाती है। यह एक सुविधाजनक ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस और कई अतिरिक्त क्षमताएं प्रदान करता है।

\n\n

Composer के माध्यम से स्थापना:

\n
composer require league/csv
\n\n

उपयोग का उदाहरण:

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse League\\Csv\\Reader;\nuse League\\Csv\\Writer;\n\n// CSV पढ़ना\n$csv = Reader::createFromPath('data.csv', 'r');\n$csv->setHeaderOffset(0); // पहली पंक्ति — हेडर\n\n// सभी रिकॉर्ड को एसोसिएटिव के रूप में प्राप्त करना                    

अनुशंसाएँ