Question

Je travaille sur un module qui nécessite l'accès à certaines données tabulaires fournies par une source externe. Il n'y a que deux colonnes, mais a à peu près 40000 lignes.

À l'heure actuelle, mon module est l'analyse que le CSV en entier si nécessaire. Cela fonctionne bien, mais étant donné que le fichier est sur le point 450Kb, cela manger des ressources du serveur une fois déployé sur un site de production.

Je voudrais déplacer ces données à une table Magento et ai du mal.

J'utilise les méthodes de SGBDR dans mon script d'installation, 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();

Ceci fonctionne bien pour créer ma table, mais se fait mes données est wracking ma tête (je suis encore un noob en matière de gestion de base de données).

Idéalement, je voudrais juste analyser mon fichier CSV et insérer des valeurs dans la table sans avoir à traiter avec un tas de copier / coller.

Y at-il des méthodes intégrées pour la gestion des données de CSV arbitraires, ou sont-ils tous construits pour gérer tout ce dont ils ont besoin pour? Quelle serait la meilleure approche pour obtenir mes données dans Magento?

Était-ce utile?

La solution

jamais fait cela. jeu Let!

Après l'appel createTable(), ou dans un script ultérieur:

/* @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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top