Zawartość artykułu
Na czym to polega?
Istnieje sposób stosunkowo szybkiego i efektywnego importu produtków ze sklepu PrestaShop 1.6 do PrestaShop 1.7. Chodzi tutaj o postawowe wypełnienie tabel po stronie MySQL. A dokłądnie kopiowanie danych pomiędzy tabelami.
Przykład pokazuje jak to zrobić w sklepie PrestaShop 1.7 w który mnie ma żadnego asortymentu i jest on wyczyszczony przez moduł pscleaner. W tym celu zainstaluj ten właśnie moduł w instalacji PrestaShop 1.7 (znajduje się on w Katalogu Modułów i jest darmowy). Za jego pomocą możesz usunąć dane testowe ze sklepu. Uwaga! Jeśli w sklepie są dane produktów lub kategorie – zostaną one bezpowrotnie utracone (o ile nie wykonasz kopii bezpieczeństwa). Pamietaj, że moduł także usuwa zdjęcia produktów. Dlatego nasz artykuł jest dedykowany do wykonywania importu na „czystej” instalacji PrestaShop 1.7
Oczywiście nasz import to nie jest złoty środek na przeniesienie asortymentu ze sklepu A do sklepu B. Pozwala zaoszczędzić czas, jednak wiele danych należy potem pouzupełniać ręcznie. Jak atrybuty, cechy, reguły podatkowe itp. Warto podkreślić, że pokazany tutaj sposób jest niezwykle skuteczny nawet przy gigantycznej ilości produktów (kilkaset tysięcy produktów i więcej), bo zapytania po stronie MySQL są niezwykle efektywne i znacznie szybsze niż klasyczny import za pomocą plików CSV.
Postawowe informacje.
Wersja silinika 1.7: PrestaShop 1.7.5.0
Wersja silnika 1.6: PrestaShop 1.6.1.18
Jest to o tyle ważne, że poszczególne wersje np. w gałęzi 1.6 mogą się różnić nazwami i liczbą kolumn. Nalezy wówczas nasze zapytania odpowiednio skorygować.
Prefix w tabeli PrestaShop 1.7: pr_
Prefix w tabeli PrestaShop 1.6: bg_
Jeśli masz inne prefixy – odpowiednio zmodyfikuj nasze zapytania.
Uwaga! Tabele w bazach danych dla poszczególnych wersji sklepu nie mogą mieć identycznych prefixów. Należy przed przystąpieniem do prac je zmienić. Więcej informacji jak hurtowo zmienic prefixy: https://stackoverflow.com/questions/2466101/how-i-can-change-prefixes-in-all-tables-in-my-mysql-db albo https://richjenks.com/change-mysql-database-table-prefix/
Jak zacząć?
Po pierwsze primo: Wykonaj kopię bezpieczeństwa bazy danych.
Musisz mieć też dostęp najlepiej do PhpMyAdmin serwera gdzie jest ulokowany sklep. Realizacja zapytań będzie dużo łatwiejsza. Następnie do bazy danych sklepu 1.7 wgrywasz dump bazy danych (np. tą z działu Zaawansowane -> Kopia bezpieczeństwa) sklepu 1.6 poprzez zakładkę Import w menu PhpMyAdmin
Następnie realizujesz zapytania wg kolejności. Oczywiście muszą one uwzględniać Twoje prefixy tabel dla obu wersji sklepów.
Zapytania są realizowane w zakładce SQL w programie PhpMyAdmin albo bezpośrednio w linii komend MySQL (konsola Linux).
Import tabeli produktowej:
INSERT INTO `pr_product` (id_product, id_supplier, id_manufacturer, id_category_default, id_shop_default, id_tax_rules_group, on_sale, online_only, ean13, upc, ecotax, quantity, minimal_quantity, price, wholesale_price, unity, unit_price_ratio, additional_shipping_cost, reference, supplier_reference, location, width, height, depth, weight, out_of_stock, quantity_discount, customizable, uploadable_files, text_fields, active, redirect_type, available_for_order, available_date, `condition`, show_price, indexed, visibility, cache_is_pack, cache_has_attachments, is_virtual, cache_default_attribute, date_add, date_upd, advanced_stock_management, pack_stock_type) SELECT id_product, id_supplier, id_manufacturer, id_category_default, id_shop_default, id_tax_rules_group, on_sale, online_only, ean13, upc, ecotax, quantity, minimal_quantity, price, wholesale_price, unity, unit_price_ratio, additional_shipping_cost, reference, supplier_reference, location, width, height, depth, weight, out_of_stock, quantity_discount, customizable, uploadable_files, text_fields, active, redirect_type, available_for_order, available_date, `condition`, show_price, indexed, visibility, cache_is_pack, cache_has_attachments, is_virtual, cache_default_attribute, date_add, date_upd, advanced_stock_management, pack_stock_type FROM `bg_product`
Import tabeli produktowej z multistore:
INSERT INTO `pr_product_shop` (id_product, id_shop, id_category_default, id_tax_rules_group, on_sale, online_only, ecotax, minimal_quantity, price, wholesale_price, unity, unit_price_ratio, additional_shipping_cost, customizable, uploadable_files, text_fields, active, redirect_type, available_for_order, available_date, `condition`, show_price, indexed, visibility, cache_default_attribute, advanced_stock_management, date_add, date_upd, pack_stock_type) SELECT id_product, id_shop, id_category_default, id_tax_rules_group, on_sale, online_only, ecotax, minimal_quantity, price, wholesale_price, unity, unit_price_ratio, additional_shipping_cost, customizable, uploadable_files, text_fields, active, redirect_type, available_for_order, available_date, `condition`, show_price, indexed, visibility, cache_default_attribute, advanced_stock_management, date_add, date_upd, pack_stock_type FROM `bg_product_shop`
Import tabeli produktowej – językowej:
INSERT INTO `pr_product_lang` (id_product, id_shop, id_lang, description, description_short, link_rewrite, meta_description, meta_keywords, meta_title, name, available_now, available_later) SELECT id_product, id_shop, id_lang, description, description_short, link_rewrite, meta_description, meta_keywords, meta_title, name, available_now, available_later FROM `bg_product_lang`
Zapytania czyszczące:
update pr_product set show_condition = 1; update pr_product_shop set show_condition = 1; TRUNCATE pr_category_product; INSERT INTO pr_category_product (id_product,id_category) SELECT id_product, 2 FROM pr_product; update pr_product_lang SET description = '' WHERE description IS NULL; update pr_product_lang SET description_short = '' WHERE description_short IS NULL;
Import zdjęć.
Przy okazji poniższego zapytania należy przenieść folder z instalacji PrestaShop 1.6
img/p
w to samo miejsce w instalacji 1.7
INSERT pr_image SELECT * FROM bg_image; INSERT pr_image_lang SELECT * FROM bg_image_lang; INSERT pr_image_shop SELECT * FROM bg_image_shop;
I to w zasadzie tyle. Po wykonaniu powyższych zapytań w zakłądce Katalog -> Produkty powinny pojawić się identyczna lista produktów jak w sklepie o starszej wersji.
Daj znać czy Ci to pomogło!
grafika: nicepik.com
Witam
Dziękuję za poradnik ale mam problem.
Jeśli wszystko zrobiłem według wytycznych, w bazie phpmyadmin pokazuje produkty importowane a w sklepie w adminie pusto w zakładce produkty to gdzie szukać przyczyny?
Dziękuję
Potwierdzam. Mam to samo walczę od kilku dni i nie wiem jaki jest powód
Dokładnie mam taki sam problem. Czy zna ktoś rozwiązanie ? Produkty są przypisane do kategorii w sklepie natomiast na zapleczu (panel administratora ) nie pokazują się w kategorii>produkty. Można je znaleźć poprzez wyszukiwanie w panelu administratora i wtedy pojawiają się i można je edytować. Czy autor bloga pomoże 🙂
Pozdrawiam
Maciej
[…] Szybki import produktów z PrestaShop 1.6 do PrestaShop 1.7 […]