我正在研究一个模块,该模块需要访问来自外部源提供的一些表格数据。它只有两列,但大约有40000行。

目前,我的模块只是在必要时全部分析CSV。这效果很好,但是由于该文件约为450KB,因此一旦部署到生产站点就会吃掉服务器资源。

我想将这些数据移至洋红色桌子上,并遇到麻烦。

我在设置脚本Ala中使用RDBMS方法:

$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的最佳方法是什么?

有帮助吗?

解决方案

从来没有这样做。让我们玩!

之后 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();
许可以下: CC-BY-SA归因
scroll top