আমদানি: কলামের নামগুলিতে সদৃশ রয়েছে


9

আমদানি ত্রুটি বার্তাটি দেখায় "কলামের নামগুলি নকল আছে" তবে আমার কোনও সদৃশ নেই।

আমি কে এটি ঠিক করতে পারি?

"_type","sku","has_options","name","image","small_image","thumbnail","url_key","url_path","price","manufacturer","status","tax_class_id","visibility","description","short_description","gift_message_available","qty","min_qty","is_qty_decimal","backorders","min_sale_qty","max_sale_qty","is_in_stock","notify_stock_qty","manage_stock","qty_increments","enable_qty_increments"
"simple","1174407","0","BCI-15BK Tintenpatrone schwarz","","","","","","22.000","Canon","Enabled","none","Catalogue,Search","BCI-15BK Tintenpatrone schwarz, 2er-Pack, für I70                    NSTintenpatronenOriginalML","BCI-15BK Tintenpatrone schwarz, 2er-Pack, für I70                    NSTintenpatronenOriginalML","","0","","","0","1","","","","","","0"

ডাউনলোড ফাইল

আমি নিশ্চিত করেছি যে আমার সমস্ত ক্ষেত্রও রফতানি সিএসভিতে বিদ্যমান। আমি কি কিছু প্রয়োজনীয় সারি অনুপস্থিত? আমি যাচাই করার চেষ্টা করেছি কিন্তু ২০১২ সালের এই উইকি পৃষ্ঠায় এমন কলম্বিয়ান প্রয়োজন যা রফতানির ফাইলেও নেই। সুতরাং আমি প্রয়োজনীয় কলুমেনগুলি কি তা নিশ্চিত নই।

পিএইচপি সংস্করণ 5.2.17


একটি রফতানি করুন এবং তুলনা করুন যে আপনার কাছে একই কলামের সেট রয়েছে।
ব্যবহারকারী 487772

ঠিক আছে, আমি না তবে আমার কাছে প্রয়োজনীয় কলাম রয়েছে তাই আমি এখানে কী অনুপস্থিত?
পাইপ নাম্বার

আপনি কোন ধরণের আমদানি ব্যবহার করছেন?
ব্যবহারকারী 487772

এটি /admin/import, পুরানো ডেটাফ্লো নয়।
পাইপ নাম্বার

তারপরে আপনার
উদাহরণগুলির

উত্তর:


13

আপনার বর্ণিত ত্রুটি বার্তার ব্যতিক্রমটি ঠিক এক জায়গায় চালিত হয়েছে (পাঠযোগ্যতার জন্য কোডটি কিছুটা কাটা):

final public function __construct($source)
{
    $this->_source = $source;

    $this->_init();

    // validate column names consistency
    if (is_array($this->_colNames) && !empty($this->_colNames)) {
        $this->_colQuantity = count($this->_colNames);

        if (count(array_unique($this->_colNames)) != $this->_colQuantity) {
            Mage::throwException(Mage::helper('importexport')->__('Column names have duplicates'));
        }
    }
}

এর অর্থ, count(array_unique($this->_colNames))অসম হতে হবে$this->_colQuantity

$_colNamesঅ্যারের মধ্যে সেট করা হয় Mage_ImportExport_Model_Import_Adapter_Csv::rewind()(যা সময় বলা হয় _init()
আবার, কোড সামান্য পাঠযোগ্যতা জন্য ছেঁটে ফেলা হয়েছে:

public function rewind()
{
    // rewind resource, reset column names, read first row as current
    rewind($this->_fileHandler);
    $this->_colNames = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure);
}

$_delimiterসেট করা হয় ,, $_enclosureসেট করা হয় "

ইস্যুটি পুনরুত্পাদন করার চেষ্টা করার জন্য, যদি আমি আপনার প্রশ্ন থেকে সিএসভি এক্সট্রাক্টটি টেস্ট কোডএসভি নামে একটি ফাইলটিতে অনুলিপি করি এবং নীচের কোডটি চালান:

$f = fopen('test.csv', 'r');
$names = fgetcsv($f, null, ',', '"');    
$qty = count($names);
$uniqueQty = count(array_unique($names));
printf("%d records, %d unique records\n", $qty, $uniqueQty);

এটি নিম্নলিখিত আউটপুট উত্পাদন করে:

29 records, 29 unique records

এর অর্থ, আপনার সিএসভি ফাইলটি মূলত ঠিক আছে। পার্থক্য অবশ্যই অন্য কোথাও হওয়া উচিত।
কীভাবে array_uniqueকাজ করে তা দেখে পিএইচপি 5.2.9 এ অ্যারে উপাদানগুলির হ্যান্ডলিং কীভাবে পরিবর্তিত হয়েছে তা এখানে একটি নোট রয়েছে: http://php.net/manual/en/function.array-unique.php#refsect1-function.array-unique -changelog

ইস্যুটি পুনরুত্পাদন করার জন্য, আমি SORT_REGULARবিকল্প টেস্টের সাথে আমার পরীক্ষা-স্ক্রিপ্টটি পুনরায় চালিয়েছি , তবে এটি এখনও একই ফলাফল দেয় (যা যৌক্তিক, যেহেতু কোনও ফাইল পড়া কেবল স্ট্রিংয়ের মান দিতে পারে)।

এই মুহুর্তে আমি বিশ্বাস করি যে পার্থক্যটি আপনি ব্যবহার করছেন সিএসভি ফাইলের মধ্যে থাকতে হবে। ইউনিক্স এবং Windows সম্পর্কে newline অক্ষর ( \nএবং \r\n) উভয় দ্বারা স্বীকৃত হয় fgetcsv()কমান্ড কিন্তু পুরানো MacOS এর শৈলী newline অক্ষর ( \r) প্রকৃতপক্ষে আচরণ আপনি সম্মুখীন হচ্ছি হতে হবে।

আপনি কেন সমস্যাটি ভোগ করছেন সে কারণেই আমি তা জানতে পারি না তবে আমি আপনাকে সিএসভি ফাইল (আবার) পরীক্ষা করে দেখার পরামর্শ দিই। আপনি যদি অবিশোধিত ফাইলে (কোনও পেস্টবিন নেই) কোথাও ডাউনলোড লিঙ্ক সরবরাহ করেন তবে এটি কোনও মুদ্রণযোগ্য অক্ষর সংরক্ষণ করা হবে না।

আপনি যদি ব্যবহার করছেন পিএইচপি সংস্করণটি পোস্ট করেন তবে এটিও সহায়তা করতে পারে।


1
এটাই! আমি webhex.net ব্যবহার করেছি এবং এটিতে ফাইলটি 0 ডি ম্যাকসোস লাইন ব্রেক \ r আছে \ আমি এটিকে \ r \ n এ পরিবর্তন করেছি এবং এখন এটি কার্যকর হয়। অনেক ধন্যবাদ!
পাইপ নাম্বার

2
আপনি অটো_ডিটেক্ট_লাইন_েন্ডিংস সক্ষম করার চেষ্টা করতে পারেন: ইনআই_সেট ("অটো_ডিটেক্ট_লাইন_েন্ডিংস", "1"), এটি পিএইচপি দ্বারা প্রস্তাবিত: php.net/manual/en/function.fgetcsv.php
এনরিক

1

আমার ম্যাকের উপর LibreOffice ব্যবহার করে সম্পাদনা করার সময় আমি এই ত্রুটিটি পেয়েছি। পরিবর্তে গুগল ড্রাইভ ব্যবহার করে ফাইল সম্পাদনা করে সমস্যার সমাধান করা হয়েছিল, তারপরে ত্রুটিটি চলে গেছে।

আমি ধরে নিলাম এটি ম্যাক লাইনের শেষের কারণে।


1

আপনি যদি নতুন-লাইন এনকোডিংটি পরীক্ষা করেছেন এবং এখনও সমস্যা দেখা দেয় তবে আপনার সিএসভিতে ডুপ্লিকেট কলামের নামটি আসলে আপনার কাছে নেই বলে ডাবল-চেক করুন। এক্সেলে আপনি দ্রুত এই কৌশলটি দিয়ে নকলকে হাইলাইট করতে পারেন:

  1. আপনি পরীক্ষা করতে চান এমন কক্ষের পরিসরটি নির্বাচন করুন (এক্ষেত্রে শিরোনামের সারিতে থাকা সমস্ত কক্ষ)।
  2. এক্সেলের হোম ট্যাবে, শর্তসাপেক্ষ বিন্যাস, হাইলাইট ঘরগুলি বিধিমালা এবং তারপরে মানগুলি নকল করুন।
  3. সদৃশ মানগুলি সনাক্ত করতে ডুপ্লিকেট মান সংলাপ বাক্সের মধ্যে ঠিক আছে ক্লিক করুন।
  4. তালিকার সদৃশ মানগুলি এখন চিহ্নিত করা হবে।

আমার ক্ষেত্রে আমি একটি সূত্র টেনে নিয়ে গিয়েছিলাম (অনিচ্ছাকৃতভাবে) শিরোনামের সারিটিতে এবং আমার শিরোনামটি বিশৃঙ্খলা করে।


0

আপনি .csv ফাইলটি (ম্যাক ব্যবহার করে) একটি উইন্ডোজ ফর্ম্যাট করা .csv হিসাবে সংরক্ষণ করতে পারেন। এটি সদৃশ কলামগুলির ত্রুটির বার্তাটি ঠিক করবে। আমি একটি ম্যাক নিয়ে কাজ করি এবং এইভাবে আমি এই আমদানি ত্রুটিগুলি প্রায় পাই। আশা করি এটা তোমার জন্য কাজ করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.