CSV'den veritabanı tablosu oluşturma


15

Harici bir kaynaktan sağlanan bazı tablo verilerine erişim gerektiren bir modül üzerinde çalışıyorum. Yalnızca iki sütun var, ancak yaklaşık 40000 satır var.

Şu anda modülüm CSV'yi gerektiğinde tamamen ayrıştırıyor. Bu iyi çalışıyor, ancak dosya yaklaşık 450Kb olduğundan, bir üretim sitesine dağıtıldığında sunucu kaynaklarını tüketecektir.

Bu verileri bir Magento tablosuna taşımak istiyorum ve sorun yaşıyorum.

Kurulum komut dosyasında, ala RDBMS yöntemleri kullanıyorum:

$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();

Bu benim tablo oluşturmak için gayet iyi çalışıyor, ama aslında benim veri almak kafamı sarma (veritabanı yönetimi söz konusu olduğunda hala bir noob).

İdeal olarak, sadece CSV dosyamı ayrıştırır ve bir grup kopyala / yapıştırla uğraşmak zorunda kalmadan tabloya değerler eklerdim.

İsteğe bağlı CSV verilerini işlemek için yerleşik yöntemler var mı veya hepsi tam olarak ihtiyaç duydukları şeyleri ele almak için oluşturulmuş mu? Verilerimi Magento'ya taşımak için en iyi yaklaşım ne olurdu?

Yanıtlar:


15

Bunu hiç yapmadım. Hadi oynayalım!

createTable()Aramadan sonra veya sonraki bir komut dosyasında:

/* @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();

vay beklemiyordum, bu çok kolay olabilir! :) Umarım bu çalışır
Fabian Blechschmidt

Veri kurulum komut dosyası gerektiren sonuçların nasıl kaydedileceğini gösterecek şekilde ayarlanmıştır.
seçimler

Varien_File_Csv, orada bir yerde olması gerektiğini biliyordum. Bunu deneyeceğim ve sonuçları güncelleyeceğim.
Ocak'ta pspahn

Çok zekice basit. Cumartesi günümü yeni yaptın. @Benmarks teşekkürler.
Ocak'ta pspahn

2
Ayrıca burada dikkat çekmeye değer, benim durumumda, ek sütunlar eklediğimde Magento'nun belleği tükeniyordu. İki veri sütunu iyiydi (ancak zar zor) ve üçüncü bir sütun eklediğimde ve yükseltme komut dosyasını çalıştırdığımda, Magento sadece beyaz bir sayfa ve hata mesajı / günlükleri ile başarısız olur. CSV'mi çalıştırmak için birden fazla dosyaya bölmek zorunda kaldım.
pspahn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.