Magento:如何将大表加载到自定义db表中?

时间:2012-03-15 14:46:51

标签: magento

我有自定义Magento模块的sql安装程序文件。它试图将数千行插入到自定义数据库表中,但是内存不足并且模块没有安装。

如果我使用普通的mysql手动放置表格并且没有“记忆气球”这样做,那么一切正常。

我希望我的模块可以作为模块工作,而无需在命令行上手动执行任何操作。有什么方法可以分解我的安装程序文件或调用一些外部例程来获取数据吗?

2 个答案:

答案 0 :(得分:1)

您可以使用模块分发包含数据的CSV文件,并使用MySQL的LOAD DATA命令将数据加载到您在升级脚本中创建的表中。

可能是这样的:

$db = Mage::getSingleton('core/resource')->getConnection('core_write');
$filename = Mage::getBaseDir('code').'/local/Your/Module/sql/your_module_setup/foo.csv';
$sql = "LOAD DATA LOCAL INFILE '".$filename."' INTO TABLE foo FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' lines terminated by '\r\n'";
$db->query($sql);

如果您需要以某种方式处理数据,您当然可以运行更多查询。

答案 1 :(得分:0)

您可以在不同的升级脚本中拆分创建表和插入。