2012-03-15 6 views
1

カスタムMagentoモジュール用のSQLインストーラファイルがあります。カスタムデータベーステーブルに何千もの行を挿入しようとしますが、メモリが不足してモジュールがインストールされません。Magento:大きなテーブルをカスタムdbテーブルにロードするには?

通常のmysqlを使って手動でテーブルを置いて、それを行う「メモリバルーン」はありません。

私はモジュールをモジュールとして動作させたいのですが、コマンドラインで手動で何もする必要はありません。インストーラファイルを分解したり、データを取得するための外部ルーチンを呼び出す方法はありますか?

+0

いくつの行がありますか?いくつかのサンプルコードを投稿してください。リファクタリングの余地がある可能性があります。私はあなたが既にSQLを実行する前にメモリの制限を増やしてみたと思いますか? –

答えて

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

これは大変ありがとうございます。まだ試していませんが、モジュールをインストールするために必要なものすべてをまとめたと思います。 –

0

異なるアップグレードスクリプトでテーブルの作成と挿入を分割できます。

関連する問題