Wróć do listy

Case Study: Jak zaimportowaliśmy 10000 produktów z dumpu bazy produkcyjnej?

E-commerce
Piotr Proszowski

Software house imoli przeniósł kompletny katalog elektronarzędzi znanej światowej marki do nowego sklepu na PrestaShop 8, wychodząc od jednego pliku: eksportu bazy produktowej producenta o wadze 85 MB, zawierającego 9304 rekordy opisane w 1236 kolumnach. W dwa tygodnie (26 czerwca – 9 lipca 2025) zbudowaliśmy w Pythonie zestaw narzędzi, które odtworzyły z tego pliku drzewo ponad 500 kategorii, zmapowały kolumny, pogrupowały produkty w warianty i wygenerowały pliki importu zgodne z formatem PrestaShop. Efekt: 2366 kart produktowych, 7626 kombinacji (wariantów) i 8956 produktów ze zdjęciami — bez ręcznego wpisania ani jednego opisu.

W skrócie

Klient sklep internetowy z elektronarzędziami znanej światowej marki
Zakres analiza danych źródłowych, import kategorii, mapowanie, transformacja, import do PrestaShop 8
Czas realizacji 26 czerwca – 9 lipca 2025 (dwa tygodnie)
Dane wejściowe 1 plik CSV: 85 MB, 1236 kolumn, 9304 rekordy
Wynik importu ponad 500 kategorii (6 poziomów zagnieżdżenia), 2366 kart produktowych, 7626 kombinacji, 8956 produktów ze zdjęciami
Technologia Python (własne generatory importu), moduł importu CSV PrestaShop 8
Alternatywa ręczne wprowadzanie: przy 10 min na produkt — ponad 1500 godzin pracy

Na czym polegał problem klienta?

Klient uruchamiał nowy sklep na PrestaShop 8 z pełną ofertą elektronarzędzi znanej marki. Jedynym źródłem danych o produktach był eksport bazy producenta: pojedynczy plik CSV o wadze 85 MB — 9304 rekordy opisane w 1236 kolumnach, od specyfikacji technicznych, przez linki do zdjęć i dokumentów PDF, po teksty marketingowe. Ręczne wprowadzenie takiego katalogu — licząc optymistycznie 10 minut na produkt — oznaczałoby ponad 1500 godzin pracy i tysiące okazji do literówek. Potrzebny był proces automatyczny i powtarzalny.

Jak wyglądały dane źródłowe i dlaczego nie dało się ich zaimportować wprost?

Ogromny arkusz danych z 1236 kolumnami, z których tylko część jest potrzebna sklepowi

Plik z bazy producenta nie przypomina pliku importu do sklepu. Z 1236 kolumn tylko kilkadziesiąt miało znaczenie dla karty produktu w PrestaShop — pierwszym krokiem było więc zbudowanie jawnej mapy kolumn: która kolumna źródłowa zasila które pole sklepu (nazwa, indeks, EAN, opis, wymiary, waga, zdjęcia, cechy). Mapa wykazała też braki: eksport producenta nie zawierał cen. Te pochodziły z systemu ERP klienta i musiały zostać precyzyjnie zmapowane do zaimportowanych produktów — dzięki mapie kolumn od początku było wiadomo, co da się zautomatyzować w całości, a co wymaga osobnego źródła danych.

Jak odtworzyliśmy drzewo ponad 500 kategorii ukryte w jednej kolumnie?

Sześciopoziomowe drzewo kategorii wyłaniające się z pojedynczej kolumny danych

Zanim do sklepu trafił pierwszy produkt, trzeba było zbudować strukturę kategorii — a ta nie istniała w pliku wprost. Ścieżka kategorii była zapisana w treści jednej z 1236 kolumn, osobno w każdym z 9304 wierszy, z zagnieżdżeniem sięgającym 6 poziomów. Napisany przez zespół imoli skrypt parsował te ścieżki, budował z nich unikalne drzewo z relacjami rodzic–dziecko, generował przyjazne adresy URL i plik importu kategorii zgodny z PrestaShop. Skrypt porównywał przy tym budowane drzewo z kategoriami już istniejącymi w sklepie, więc import można było bezpiecznie powtarzać bez tworzenia duplikatów. Powstało ponad 500 kategorii, a każdy produkt został automatycznie przypisany do właściwego miejsca w drzewie.

Jak z 9304 rekordów powstał czytelny katalog z wariantami?

Grupowanie wielu niemal identycznych rekordów w jedną kartę produktu z wariantami

W bazie producenta każda wersja produktu to osobny rekord — klient sklepu zobaczyłby setki niemal identycznych pozycji. Napisany przez zespół imoli generator pogrupował rekordy w karty produktowe i automatycznie wykrył atrybuty wariantów, porównując cechy techniczne wewnątrz każdej grupy: te cechy, które różnicowały rekordy (np. długość czy rozmiar), stawały się atrybutami kombinacji, a lista wykluczeń pilnowała, żeby atrybutem nie została cecha przypadkowa. Wynik: 2366 kart produktowych i 7626 kombinacji, każda z własnym indeksem, kodem EAN i zdjęciem.

Co sprawiło najwięcej problemów przy imporcie do PrestaShop 8?

Kontrolowany import danych w partiach z odrzucaniem błędnych rekordów do diagnostyki

Najtrudniejszy okazał się import kombinacji. PrestaShop 8 wymaga w pliku CSV ścisłego formatu Atrybut (Nazwa:Typ:Pozycja) i Wartość (Wartość:Pozycja) — a przy czterech atrybutach na produkt i długich polskich nazwach cech technicznych część rekordów przekraczała limity długości pól i gubiła spójność numeracji pozycji. Zamiast poprawiać plik ręcznie, przygotowaliśmy narzędzie naprawcze, które skracało zbyt długie nazwy atrybutów i tekstów alternatywnych zdjęć oraz pilnowało spójnej numeracji pozycji w obrębie każdego produktu. Rekordy odrzucane przez import trafiały do osobnego pliku diagnostycznego, a poprawiony materiał wchodził do sklepu w kontrolowanych partiach — dzięki temu każdy błąd był widoczny i policzalny, zamiast ginąć w masie.

Jak trafiły do sklepu zdjęcia i cechy produktów?

Zdjęcia nie były kopiowane ręcznie: generator zapisał w plikach importu bezpośrednie adresy URL grafik z serwerów producenta, a PrestaShop pobrał je podczas importu — łącznie dla 8956 produktów, wraz z tekstami alternatywnymi budowanymi z nazwy i parametrów produktu. Cechy techniczne z bazy producenta zostały przełożone na pola cech PrestaShop (Cecha:Wartość:Pozycja), dzięki czemu działają filtry i porównywarki, a opisy, meta-tagi i przyjazne adresy URL wygenerowały się z danych źródłowych.

Jaki był efekt?

Kompletny, uporządkowany katalog produktów w nowym sklepie internetowym

W dwa tygodnie — od 26 czerwca do 9 lipca 2025 — nowy sklep na PrestaShop 8 otrzymał kompletny katalog: ponad 500 kategorii w 6-poziomowym drzewie, 2366 kart produktowych z 7626 wariantami, zdjęciami, cechami technicznymi i opisami w jakości danych producenta, bez ręcznego przepisywania. Równie ważna jest powtarzalność: cały proces to skrypty, więc kolejny eksport bazy producenta można przetworzyć tą samą ścieżką, zamiast zaczynać od zera.

Co było dalej? Parowanie sklepu z systemem ERP

Import katalogu to pierwszy etap — w kolejnym sklep został sparowany z systemem ERP klienta (Comarch) po kodach EAN, żeby ceny i stany magazynowe aktualizowały się automatycznie. Do odnalezienia produktów, których kody nie zgadzały się między systemami, zbudowaliśmy osobne narzędzia weryfikujące kody EAN w zewnętrznych bazach. Ten etap opiszemy w osobnym case study.

FAQ — najczęstsze pytania

Czy da się zaimportować kilka tysięcy produktów do PrestaShop 8 z pliku CSV?

Tak. W opisywanym projekcie software house imoli przetworzył 9304 rekordy z eksportu bazy producenta (85 MB, 1236 kolumn) do postaci plików importu PrestaShop 8 i zaimportował 2366 kart produktowych z 7626 kombinacjami. Warunkiem jest transformacja danych do formatu PrestaShop — surowy eksport z bazy producenta lub ERP nigdy nie nadaje się do importu wprost.

Jak zaimportować do PrestaShop kategorie z wielopoziomowym zagnieżdżeniem?

Kategorie importuje się osobnym plikiem CSV, w którym każda kategoria wskazuje swojego rodzica — dlatego drzewo trzeba zbudować w całości przed importem, od korzenia w dół. W opisywanym projekcie ścieżki kategorii (do 6 poziomów) były ukryte w treści jednej kolumny pliku źródłowego; skrypt odtworzył z nich drzewo ponad 500 kategorii wraz z przyjaznymi adresami URL.

Jak przenieść do PrestaShop produkty z wariantami (kombinacjami)?

Kombinacje importuje się osobnym plikiem CSV w formacie Atrybut (Nazwa:Typ:Pozycja) + Wartość (Wartość:Pozycja), powiązanym z produktami po ID lub indeksie. W praktyce trzeba pilnować limitów długości nazw atrybutów i spójnej numeracji pozycji — przy tysiącach kombinacji wymaga to automatu, nie pracy ręcznej.

Czy import produktów wymaga ręcznego kopiowania zdjęć?

Nie. PrestaShop potrafi pobrać zdjęcia z adresów URL podanych w pliku importu. W tym projekcie sklep pobrał w ten sposób grafiki dla 8956 produktów bezpośrednio z serwerów producenta, wraz z opisowymi tekstami alternatywnymi.

Co zrobić, gdy baza producenta nie zawiera cen albo stanów magazynowych?

To normalna sytuacja — bazy produktowe producentów (PIM) opisują produkt, a nie ofertę handlową. Ceny i stany magazynowe pochodzą z systemu ERP sprzedawcy i muszą zostać poprawnie zmapowane do zaimportowanych produktów; w opisywanym projekcie sklep został w kolejnym etapie sparowany z Comarch po kodach EAN.

7 lipca 2026
Piotr Proszowski
Back-end developer w Imoli