Domanda

Sto lavorando su un modulo che richiede l'accesso ad alcuni dati tabulari forniti da una sorgente esterna. E 'solo due colonne, ma ha circa 40000 righe.

Al momento, il mio modulo è solo l'analisi del CSV in totalità in caso di necessità. Questo metodo funziona bene, ma dal momento che il file è di circa 450Kb, questo sarà mangiare fino risorse del server, una volta distribuito in un sito di produzione.

Mi piacerebbe spostare questi dati a una tabella di Magento e sto avendo difficoltà.

Io sto usando i metodi RDBMS nel mio script di installazione, 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();

Questo funziona bene per creare il mio tavolo, ma in realtà sempre i miei dati in è wracking mia testa (io sono ancora un noob quando si tratta di gestione di database).

Idealmente, vorrei solo analizzare il mio file CSV e inserire i valori nella tabella, senza avere a che fare con un mazzo di copia / incolla.

Ci sono dei built-in metodi per la gestione dei dati CSV arbitrari, o sono tutti costruiti per gestire solo ciò di cui hanno bisogno per? Quale sarebbe l'approccio migliore per ottenere i miei dati in Magento?

È stato utile?

Soluzione

mai fatto. un gioco da Let!

Dopo la chiamata createTable(), o in uno script successiva:

/* @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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top