CSV से डेटाबेस तालिका बनाएं


15

मैं एक ऐसे मॉड्यूल पर काम कर रहा हूं जिसके लिए बाहरी स्रोत से प्रदान किए गए कुछ सारणीबद्ध डेटा तक पहुंच की आवश्यकता होती है। यह केवल दो कॉलम है लेकिन इसमें लगभग 40000 पंक्तियाँ हैं।

वर्तमान में, मेरा मॉड्यूल पूरी तरह से आवश्यक होने पर सीएसवी को पूरी तरह से पार्स कर रहा है। यह अच्छी तरह से काम करता है, लेकिन चूंकि फ़ाइल 450Kb के बारे में है, यह एक उत्पादन साइट पर तैनात होने के बाद सर्वर संसाधनों को खा जाएगा।

मैं इस डेटा को एक Magento टेबल पर ले जाना चाहता हूँ और मुझे परेशानी हो रही है।

मैं अपनी स्क्रिप्ट में RDBMS विधियों का उपयोग कर रहा हूं, ala:

$installer = $this;
$installer->startSetup();

$table = $installer->getConnection()
    ->newTable($installer->getTable('my_table'))
    ->addColumn('column_a', Varien_Db_Ddl_Table::TYPE_TEXT, 5, array(
        'nullable' => false,
        ), 'Column A')
    ->addColumn('column_b', Varien_Db_Ddl_Table::TYPE_TEXT, 3, array(
        'nullable' => false,
        ), 'Column B');

$installer->getConnection()->createTable($table);

$installer->endSetup();

यह मेरी तालिका बनाने के लिए ठीक काम करता है, लेकिन वास्तव में मेरा डेटा प्राप्त करना मेरे सिर को मिटा रहा है (मैं अभी भी एक noob है जब यह डेटाबेस प्रबंधन की बात आती है)।

आदर्श रूप में, मैं सिर्फ अपनी CSV फ़ाइल को पार्स करूंगा और कॉपी / पेस्ट के एक गुच्छा से निपटने के लिए बिना तालिका में मान सम्मिलित कर सकता हूं।

क्या मनमाने ढंग से सीएसवी डेटा को संभालने के लिए कोई अंतर्निहित तरीके हैं, या क्या वे सभी को केवल उन्हें संभालने के लिए बनाया गया है जो उन्हें चाहिए? Magento में मेरा डेटा प्राप्त करने के लिए सबसे अच्छा तरीका क्या होगा?

जवाबों:


15

ऐसा कभी नहीं किया। चलो खेलें!

createTable()कॉल के बाद , या बाद की स्क्रिप्ट में:

/* @var $installer Mage_Core_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();

//Extract data from CSV file
$csv = new Varien_File_Csv;
$data = $csv->getData('path/to/file.csv');

$resultNum = $installer->getConnection()->insertArray(
    $installer->getTable({TABLE NAME}),
    array({COL 1},{COL 2}),    //column names
    $data
);

//EDIT: if this is done using a data setup script, can even log the results:
Mage::log(
    __FILE__." added $resultNum records to $installer->getTable({TABLE NAME})",
    Zend_Log::INFO,
    "setup.log",
    true
);

$installer->endSetup();

वाह मुझे उम्मीद नहीं थी, कि यह इतना आसान हो सकता है! :) आशा है कि यह काम करता है
फेबियन ब्लेसस्मिड

परिणाम लॉग करने के तरीके को दिखाने के लिए समायोजित किया गया, जिसमें डेटा सेटअप स्क्रिप्ट की आवश्यकता होती है।
15

Varien_File_Csv, मुझे पता था कि यह कहीं न कहीं होना ही था। मैं इसे एक शॉट दूंगा और परिणाम के साथ अपडेट करूंगा।
pspahn

तो शानदार ढंग से सरल। आपने सिर्फ मेरा शनिवार बनाया। धन्यवाद @ चिह्न।
pspahn

2
यहाँ यह भी ध्यान देने योग्य है कि मेरी स्थिति में, जब मैं अतिरिक्त कॉलम जोड़ रहा था तो मैगेंटो मेमोरी से बाहर चल रहा था। डेटा के दो कॉलम ठीक थे (बस बमुश्किल) और जैसे ही मैंने एक तीसरा कॉलम जोड़ा और अपग्रेड स्क्रिप्ट को चलाया, Magento बस एक सफेद पृष्ठ और कोई त्रुटि संदेश / लॉग के साथ विफल हो जाएगा। मुझे अपने CSV को काम करने के लिए कई फाइलों में विभाजित करने के लिए मजबूर किया गया था।
pspahn २ p
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.