質問

私は、外部ソースから提供されるいくつかの表形式データへのアクセスが必要なモジュールに取り組んでいます。たった2つの列ですが、約40000行です。

現在、私のモジュールは、必要に応じてCSV全体を解析しています。これはうまく機能しますが、ファイルは約450kbであるため、生産サイトに展開されるとサーバーリソースが消費されます。

このデータをMagentoテーブルに移動したいと思いますが、問題があります。

セットアップスクリプトで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();

これは私のテーブルを作成するのに正常に機能しますが、実際に私のデータを取得することは私の頭を巻き起こしています(データベース管理に関してはまだNOOBです)。

理想的には、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帰属
所属していません magento.stackexchange
scroll top