Import pokazuje komunikat o błędzie „Nazwy kolumn mają duplikaty”, ale nie mam żadnych duplikatów.
Komu mogę to naprawić?
"_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"
Upewniłem się, że wszystkie moje pola istnieją również w eksportowanym pliku CSV. Czy brakuje niektórych wymaganych wierszy? Próbowałem sprawdzić, ale ta strona wiki z 2012 roku wymaga kolumn, których nawet nie ma w eksportowanym pliku. Nie jestem więc pewien, jakie są wymagane kolumny.
Wersja PHP to 5.2.17
ce-1.7.0.2
import
PiTheNumber
źródło
źródło
/admin/import
, Nie stara przepływ danych.Odpowiedzi:
Wyjątek z podanym komunikatem o błędzie jest uruchamiany dokładnie w jednym miejscu (nieznacznie obcięty kod dla czytelności):
Oznacza to, że
count(array_unique($this->_colNames))
muszą być nierówne$this->_colQuantity
$_colNames
Tablica jest ustawiona naMage_ImportExport_Model_Import_Adapter_Csv::rewind()
(co nazywa się w czasie_init()
.Po raz kolejny kod jest lekko obcięte dla czytelności:
$_delimiter
Jest ustawiony,
,$_enclosure
jest ustawiony"
.Aby spróbować odtworzyć problem, skopiuję fragment CSV z pytania do pliku o nazwie test.csv i uruchomię następujący kod:
produkuje następujące dane wyjściowe:
Oznacza to, że Twój plik CSV jest zasadniczo w porządku. Różnica musi być gdzie indziej.
Patrząc na to, jak
array_unique
działa, można zauważyć, jak zmieniła się obsługa typów elementów tablicy w PHP 5.2.9: http://php.net/manual/en/function.array-unique.php#refsect1-function.array-unique dziennik zmianAby odtworzyć problem, uruchomiłem ponownie skrypt testowy z
SORT_REGULAR
zestawem opcji, ale nadal daje to ten sam wynik (co jest logiczne, ponieważ odczyt pliku może dać wartości ciągu).W tej chwili uważam, że różnica musi być w używanym pliku CSV. Znaki nowego wiersza w systemach Unix i Windows (
\n
i\r\n
) są rozpoznawane przezfgetcsv()
polecenie, ale stary znak nowej linii w systemie MacOS (\r
) w rzeczywistości prowadziłby do występującego zachowania.Nie wiem, czy to jest powód tego problemu, ale sugeruję sprawdzenie pliku CSV (ponownie). Może to również pomóc, jeśli podasz gdzieś link do niezmodyfikowanego pliku (bez wklejenia), aby wszystkie znaki niedrukowalne zostały zachowane.
Może to również pomóc, jeśli opublikujesz wersję PHP, której używasz.
źródło
Ten błąd pojawiał się podczas edycji i zapisywania za pomocą LibreOffice na moim komputerze Mac. Problem został rozwiązany przez edycję pliku za pomocą Dysku Google, a następnie błąd zniknął.
Zakładam, że jest to spowodowane zakończeniami linii Mac.
źródło
Jeśli sprawdziłeś kodowanie nowej linii i nadal masz problemy, sprawdź dwukrotnie, czy w pliku CSV nie ma zduplikowanej nazwy kolumny. W programie Excel możesz szybko wyróżnić duplikaty za pomocą tej techniki:
W moim przypadku przeciągnąłem formułę (nieumyślnie) do wiersza nagłówka i pomieszałem nagłówek.
źródło
Możesz również zapisać plik .csv (za pomocą komputera Mac) jako plik .csv w formacie Windows. To naprawi komunikat o błędzie zduplikowanych kolumn. Pracuję na komputerze Mac i w ten sposób omijam te błędy importu. Mam nadzieję, że Ci się uda.
źródło