2012-03-15 45 views
1

我有我的自定義Magento模塊的sql安裝程序文件。它嘗試將數千行插入到自定義數據庫表中,但它的內存不足並且模塊不能安裝。Magento:如何將大表加載到自定義數據庫表中?

一切工作正常,如果我把手動與普通的MySQL表,並沒有'內存氣球'這樣做。

我想我的模塊作爲一個模塊工作,而不必在命令行上手動執行任何操作。有什麼辦法可以分解我的安裝文件或調用一些外部例程來獲取數據?

+0

有多少行?發佈一些示例代碼。有可能有重構的空間。我假設你在運行SQL之前已經嘗試增加內存限制? – 2012-03-15 18:29:00

回答

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

你可以,當然,如果你需要以某種方式處理數據,運行進一步查詢。

+0

非常感謝Thankyou - 我還沒有嘗試過,但我認爲你已經把我需要的所有東西放在一起讓我的模塊安裝。 – 2012-03-19 11:10:37

0

您可以拆分創建表並插入不同的升級腳本。

相關問題