CSVからデータベーステーブルを作成する


15

外部ソースから提供された表形式のデータにアクセスする必要があるモジュールに取り組んでいます。2列だけですが、およそ40000行あります。

現在、私のモジュールは必要に応じてCSV全体を解析しています。これはうまく機能しますが、ファイルは約450Kbなので、本番サイトにデプロイされるとサーバーリソースを使い果たします。

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

私は、セットアップスクリプト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に取り込む最良の方法は何ですか?

回答:


15

これをやったことがない。遊ぼう!

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

これはとても簡単かもしれないとは思っていませんでした!:)これがうまくいくことを願って
ファビアンBlechschmidt

結果を記録する方法を示すように調整しました。これにはデータ設定スクリプトが必要です。
ベンマーク

Varien_File_Csv、私はそれがどこかになければならないと知っていました。これを試して、結果を更新します。
-pspahn

とてもシンプルです。あなたはちょうど私の土曜日を作りました。@benmarksに感謝します。
pspahn

2
また、ここで注目に値するのは、私の状況では、列を追加したときにMagentoのメモリが不足していたことです。2列のデータは問題なく(ほんのわずか)、3列目を追加してアップグレードスクリプトを実行するとすぐに、Magentoは白いページを表示してエラーメッセージ/ログを表示せずに失敗しました。CSVを複数のファイルに分割して機能させる必要がありました。
pspahn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.