সিএসভি থেকে ডাটাবেস টেবিল তৈরি করুন


15

আমি এমন একটি মডিউলে কাজ করছি যা কোনও বাহ্যিক উত্স থেকে সরবরাহ করা কিছু টাবুলার ডেটা অ্যাক্সেসের প্রয়োজন। এটি মাত্র দুটি কলামে প্রায় 40000 সারি রয়েছে।

বর্তমানে, যখন প্রয়োজন হবে তখন আমার মডিউলটি কেবলমাত্র সিএসভিকে পুরোপুরি পার্স করছে। এটি ভালভাবে কাজ করে তবে ফাইলটি প্রায় 450Kb এর ফলে এটি কোনও প্রোডাকশন সাইটে নিযুক্ত সার্ভার সংস্থানগুলি খেয়ে ফেলবে।

আমি এই ডেটাটি একটি ম্যাজেন্টো টেবিলে স্থানান্তরিত করতে চাই এবং সমস্যা হচ্ছে।

আমি আমার সেটআপ স্ক্রিপ্টে আরডিবিএমএস পদ্ধতি ব্যবহার করছি, আলা:

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

এটি আমার টেবিলটি তৈরি করতে ঠিক কাজ করে, তবে আসলে আমার ডেটা পেয়ে আমার মাথাটি ছিঁড়ে ফেলা হয় (এটি যখনই ডাটাবেস পরিচালনার ক্ষেত্রে আসে আমি তখনও নগ্ন)।

আদর্শভাবে, আমি কেবল আমার সিএসভি ফাইলটি বিশ্লেষণ করব এবং একগুচ্ছ অনুলিপি / পেস্টের সাথে কারবার ছাড়াই টেবিলে মান সন্নিবেশ করবো।

স্বেচ্ছাসেবক সিএসভি ডেটা পরিচালনা করার জন্য কি কোনও অন্তর্নির্মিত পদ্ধতি রয়েছে, বা সেগুলি কেবল তাদের যা প্রয়োজন তা হ্যান্ডেল করার জন্য নির্মিত? আমার ডেটা ম্যাজেন্টোর মধ্যে পাওয়ার জন্য সর্বোত্তম পদ্ধতির কী হবে?

উত্তর:


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

বাহ আমি আশা করিনি, এটি এত সহজ হতে পারে! :) আশা করি এটি কাজ করে
ফ্যাবিয়ান ব্লেশমিড

ফলাফলগুলি কীভাবে লগ করতে হয় তা প্রদর্শনের জন্য সামঞ্জস্য করা হয়েছে যার জন্য ডেটা সেটআপ স্ক্রিপ্ট দরকার।
বেনমার্কস

ভ্যারেন_ফ্লে_সিএসভি, আমি জানতাম এটি কোথাও থাকতে হবে। আমি এটিকে একটি শট দেব এবং ফলাফলগুলি সহ আপডেট করব।
pspahn

এত উজ্জ্বল সহজ। তুমি সবেমাত্র আমার শনিবার করেছ। ধন্যবাদ @ বেনমার্কস।
পিএসপাহ্ন

2
এখানে লক্ষ্য করার মতো বিষয়টিও আমার পরিস্থিতিতে, যখন আমি অতিরিক্ত কলামগুলি যুক্ত করলাম তখন ম্যাগেন্টো স্মৃতিশক্তি থেকে দূরে ছিল। ডেটা দুটি কলাম ভাল ছিল (সবেমাত্র সবে) এবং যত তাড়াতাড়ি আমি একটি তৃতীয় কলাম যুক্ত করেছি এবং আপগ্রেড স্ক্রিপ্টটি চালিয়ে যাচ্ছি, Magento কেবল একটি সাদা পৃষ্ঠা এবং কোনও ত্রুটি বার্তা / লগ সহ ব্যর্থ হবে। আমি আমার সিএসভিটিকে কাজ করার জন্য একাধিক ফাইলে বিভক্ত করতে বাধ্য হয়েছিল।
পিএসপাহন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.