Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Import produktów Magento z bazy danych za pomocą zapytania SQL

Nie zamierzam publikować całego zapytania SQL, ponieważ ręczne pobieranie danych z Magento za pośrednictwem bazy danych jest zbyt żmudne, ale powiem, że jesteś na dobrej drodze. Aby zmniejszyć liczbę łączeń dla tego rodzaju rzeczy, pobieram moje atrybuty atrybutów z tabeli eav i używam ich bezpośrednio. Oznacza to, że moje zapytanie będzie działać tylko na moim zainstalować Magento, ale nie stanowiło to dla mnie problemu.

select attribute_code, attribute_id, backend_type from eav_attribute
    where entity_type_id = (select entity_type_id from eav_entity_type where entity_type_code = 'catalog_product')
      and attribute_code in ('name', 'url_path', 'price', 'image', 'description', 'manufacturer');

Plony:

+----------------+--------------+--------------+
| attribute_code | attribute_id | backend_type |
+----------------+--------------+--------------+
| description    |           61 | text         |
| image          |           74 | varchar      |
| manufacturer   |           70 | int          |
| name           |           60 | varchar      |
| price          |           64 | decimal      |
| url_path       |           87 | varchar      |
+----------------+--------------+--------------+

Teraz jesteś gotowy na nudę! Dla każdego kodu atrybutu dołącz do tabeli zaplecza (catalog_product_entity_$BACKEND_TYPE ) na podanym identyfikatorze atrybutu. Dla mnie zamieniłoby to zapytanie sku/name/id (Twoje zapytanie w rzeczywistości nie musi łączyć się z produktami, ponieważ używasz elementu entity_id do łączenia...) w:

select p.sku, p.entity_id, n.value name
    from catalog_product_entity p
    join catalog_product_entity_varchar n on n.entity_id = p.entity_id
  where n.attribute_id = 60;

Kontynuuj dodawanie nowych zestawów join-statement|where-clause|select-clause, aż uzyskasz wszystkie połączenia, które chciałeś pierwotnie.

To powiedziawszy, Jonathan ma rację, że użycie frameworka Magento do zarządzania tymi danymi byłoby znacznie łatwiejsze niż robienie tego ręcznie za pośrednictwem bazy danych. O ile nie masz ekstremalnej liczby produktów, które musisz załadować wszystkie naraz (pamiętaj, że istnieją dwa założenia i możesz pracować nad ich zmniejszeniem), znacznie bardziej niezawodne byłoby użycie frameworka.

Mam nadzieję, że to pomoże!

Dzięki, Joe




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Performance UNION vs OR

  2. Odmowa dostępu dla użytkownika „@”localhost” (przy użyciu hasła:NIE)

  3. Czy szybciej jest przekonwertować na varchar lub varchar na int podczas porównywania w MySQL?

  4. Jak to zrobić w Laravel, podzapytanie gdzie in

  5. Zapomniałem hasła Script PHP mysqli baza danych