สร้างตารางฐานข้อมูลจาก CSV


15

ฉันกำลังทำงานกับโมดูลที่ต้องการเข้าถึงข้อมูลแบบตารางบางอย่างจากแหล่งข้อมูลภายนอก มันเป็นเพียงสองคอลัมน์ แต่มีประมาณ 40000 แถว

ขณะนี้โมดูลของฉันกำลังแยกวิเคราะห์ CSV ทั้งหมดเมื่อจำเป็น วิธีนี้ใช้งานได้ดี แต่เนื่องจากไฟล์มีขนาดประมาณ 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();

มันใช้งานได้ดีในการสร้างตารางของฉัน แต่จริงๆแล้วการได้รับข้อมูลของฉันกำลังทำให้พินาศ

เป็นการดีที่ฉันจะแยกไฟล์ CSV ของฉันและแทรกค่าลงในตารางโดยไม่ต้องจัดการกับคัดลอก / วางเครือ

มีวิธีการในตัวสำหรับการจัดการข้อมูล 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();

ว้าวฉันไม่ได้คาดหวังว่ามันจะง่ายมาก! :) หวังว่างานนี้จะได้รับ
Fabian Blechschmidt

ปรับเพื่อแสดงวิธีบันทึกผลลัพธ์ซึ่งต้องใช้สคริปต์การตั้งค่าข้อมูล
benmarks

Varien_File_Csv ฉันรู้ว่ามันต้องอยู่ที่ไหนซักแห่ง ฉันจะให้ภาพนี้และอัปเดตพร้อมผลลัพธ์
pspahn

ง่ายมากเลย คุณเพิ่งสร้างวันเสาร์ของฉัน ขอบคุณ @ เครื่องหมาย
pspahn

2
ที่น่าสังเกตก็คือในสถานการณ์ของฉันวีโอไอพีกำลังจะหมดเมื่อฉันเพิ่มคอลัมน์เพิ่มเติม ข้อมูลสองคอลัมน์นั้นใช้ได้ (เพิ่งจะเพิ่ง) และทันทีที่ฉันเพิ่มคอลัมน์ที่สามและรันสคริปต์อัปเกรดวีโอไอพีจะล้มเหลวด้วยหน้าขาวและไม่มีข้อความแสดงข้อผิดพลาด / บันทึก ฉันถูกบังคับให้แบ่ง CSV ของฉันเป็นหลายไฟล์เพื่อให้มันใช้งานได้
pspahn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.