Aktualizacja danych w magazynie sklepu internetowego może zostać przeprowadzona za pomocą pliku CSV. Importując dane z pliku CSV może we względnie szybszy sposób dodać nowe produkty lub zmienić dane istniejących produktów w magazynie sklepu internetowego (nazw, opisów, stanów ilościowych, cen, zdjęć i innych). Dobrze prowadzona aktualizacja danych za pomocą pliku CSV wymaga jednak sporo rozwagi i wiedzy na temat procesu importu danych. Trzeba rozumieć zależności zachodzące w trakcie tego procesu i umieć naprawiać ewentualne błędy.
- Przed rozpoczęciem prac wykonujemy kopię zapasową sklepu internetowego. Kopię datujemy aktualną datą i zapisujemy na serwerze lub dysku głównym. Jeśli kopie wykonujemy częściej, cyklicznie usuwamy z serwera starsze wersje. Kopię wykonuje ze względu na możliwość popełnienia błędu skutkującego np. błędnym nadpisaniem danych na magazynie (posiadanie kopii samego pliku CSV może nie wystarczyć, gdyż za jej pomocą np. nie usuniemy błędnych danych produktowych z magazynu, a jedynie co najwyżej wprowadzimy nowe obok starych i konieczne będzie ręczne usuwanie produktów).
- Przygotowanie pliku CSV do importu danych na magazyn sklepu internetowego wymaga poznania struktury plików CSV wymaganą przez daną wersję oprogramowania sprzedażowego. W tym celu wprowadzamy ręcznie kilka produktów na magazyn sklepu i eksportujemy plik CSV. Dwie najważniejsze czynności, to wybór pochodzenia pliku [w przypadku Polski najczęściej jest to 65001: Unicode (UTF-8)] oraz wybór ograniczników (średni? Przecinek? Spacja lub inny).
- Kolejną ważną czynnością jest umiejętne otwarcie plików CSV. Pliki CSV otwieramy programem Excel 2019 lub nowszym. Niektóre osoby preferuję Open Calc, ale ze względu na ograniczoną funkcjonalność pracujemy na oprogramowaniu Microsoft. Pliki CSV otwieramy z poziomu nowego dokumentu, dzięki temu zachowamy kontrolę nad kodowaniem treści i struktury pliku. Następnie nadpisujemy pobrane pliki. Niewłaściwe, tj. bezpośrednie otwarcie plików CSV może skutkować błędem treści i.lub struktury.
- Aby lepiej zrozumieć istotę procesu importu danych z pliku CSV warto przeprowadzić kilka testów. Jednym z pytań, które możemy zadać na początku jest pytanie, a co by było gdyby… (ulubione pytanie informatyka) zaimportować wcześniej pobrany ze sklepu plik CSV nie nanosząc nań żadnych zmian. Pamiętając, że mamy tam tylko 1-2 testowe produkty, importujemy ten plik ponownie na sklep internetowy. Od razu pojawia się pytanie o zachowanie bazy danych. Czy utworzymy w ten sposób kolejne produkty, czy też nadpiszemy istniejące?
- Testujemy importowanie pliku CSV, na którym nie naniesiono żadnych zmian. Celowo pomijam w tym miejscu problematykę mapowania cech. Rzeczywistość pokazuje, że niezależnie od wszystkich opcji, przy założeniu właściwego mapowania cech, produkty zostaną zaktualizowane i nie zostanie utworzony nowy produkt. Jeśli tylko prawidłowo przeprowadziliśmy mapowanie produktów, nie utworzy się nowy produkt na magazynie. Wynik tej obserwacji jest ważny z tego względu, iż na niektórych sklepach możemy zaznaczyć opcję kierunkową, która proponuje np. że “Istniejące produkty z poprawnym ID lub SKU zostaną zaktualizowane. Produkty, które nie istnieją zostaną pominięte”. W naszym przypadku, jeśli dane z pliku CSV są identyczne z tymi na magazynie, zaznaczenie tej opcji nie zmienia zupełnie nic.
- W momencie jednak, kiedy zmienimy jakieś dane (na razie inne aniżeli ID lub SKU), np. stan ilościowy i cenę, to oznaczenie lub brak oznaczenia tej opcji nabiera znaczenia. Jeśli nie zaznaczymy opcji “zaktualizuj istniejące produkty”, to wprowadzone przez nas zmiany (np. stan ilościowy i cen zostaną pominięte). System poinformuje nas wtedy, że produkt został pominięty (jako nowy) ze względu na zduplikowane ID lub SKU. Jeśli jednak zaznaczymy tę opcję, to wprowadzone przez nas zmiany zostaną przeniesione do bazy danych. W rzeczywistości więc albo aktualizujemy bazę danych i zaznaczamy opcję “zaktualizuj istniejące produkty” lub wprowadzamy produkty, które nie istnieją na magazynie. Stąd wniosek taki, że nie można jednocześnie aktualizować danych i wprowadzać nowych produktów.
- W następnej kolejności zadajemy kolejne pytanie z serii, a co by było gdyby i wprowadzamy zmianę, najpierw w samym SKU produktu, potem w samym ID produktu, a następnie i tu i tam. W dalszym ciągu też manipulujemy opcją “zaktualizuj istniejące produkty”. Mamy więc 6 nowych wariantów:
- Zaktualizuj istniejące produkty. Produkt w plku CSV ma inne SKU
- Zaktualizuj istniejące produkty. Produkt w plku CSV ma inne ID
- Zaktualizuj istniejące produkty. Produkt w plku CSV ma inne ID i SKU
- Nie aktualizuj istniejących produktów. Produkt w plku CSV ma inne SKU
- Nie aktualizuj istniejących produktów. Produkt w plku CSV ma inne ID
- Nie aktualizuj istniejących produktów. Produkt w plku CSV ma inne ID i SKU
- Wnioskujemy, że w rzeczywistości jeżeli:
- Zaktualizuj istniejące produkty. Produkt w plku CSV ma inne SKU: produkt został zaktualizowany, nastąpiła aktualizacja SKU
- Zaktualizuj istniejące produkty. Produkt w plku CSV ma inne ID: produkt został pominięty, przyczyną niepowodzenia jest brak istniejących produktów do aktualizacji.
- Zaktualizuj istniejące produkty. Produkt w plku CSV ma inne ID i SKU: domyślnie jak wyżej.
- Nie aktualizuj istniejących produktów. Produkt w plku CSV ma inne SKU: 1 produkt zaimportowany (pod nowym numerem ID).
- Nie aktualizuj istniejących produktów. Produkt w plku CSV ma inne ID: 1 produkt został pominięty (przyczyna niepowodzenia: produkt z tym SKU już istnieje)* (Uwaga: błędne tłumaczenie na wooCommerce).
- Nie aktualizuj istniejących produktów. Produkt w plku CSV ma inne ID i SKU: 1 produkt zaimportowany (pod nowym numerem ID).
- Nasuwają się dwa wnioski logiczne:
- Aktualizują się te produkty z pliku CSV, które mają ID równe temu z magazynu. Innymi słowy aktualizacja produktów zachodzi po ID).
- Na magazynie tworzą się nowe produkty, które mają SKU różne od tych na magazynie sklepu. Innymi słowy dodawanie nowych produktów zachodzi po SKU.
- Zachodzi więc potrzeba rozdzielenia procesu importu nowych produktów (tych z innym SKU) oraz aktualizacji danych (kojarzonych po ID).