sql >> Databáze >  >> RDS >> Mysql

Import produktů Magento z databáze pomocí SQL dotazu

Nebudu zveřejňovat celý SQL dotaz, protože je příliš zdlouhavé pokoušet se dostat data z Magenta ručně přes databázi, ale řeknu, že jste na správné cestě. Abych snížil počet spojení pro tento druh věcí, získám své atribut_ids z tabulky eav a přímo je použiji. To znamená, že můj dotaz bude fungovat pouze na můj nainstalovat Magento, ale to pro mě nebyl problém.

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');

Výtěžky:

+----------------+--------------+--------------+
| 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      |
+----------------+--------------+--------------+

Nyní jste připraveni na nudu! Pro každý kód atributu se připojte k tabulce backendu (catalog_product_entity_$BACKEND_TYPE ) na vašem daném ID atributu. Pro mě by to proměnilo dotaz sku/name/id (váš dotaz se ve skutečnosti nemusí spojit s produkty, protože ke spojení používáte entity_id...) na:

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;

Pokračujte v přidávání nových sad příkazů join|where-clause|select-clause, dokud nebudete mít všechna spojení, která jste původně chtěli.

To znamená, že Jonathan má pravdu, že použití rámce Magento ke správě těchto dat by bylo mnohem jednodušší, než to dělat ručně prostřednictvím databáze. Pokud nemáte extrémní počet produktů, které potřebujete načíst všechny najednou (všimněte si, že existují dva předpoklady a můžete pracovat na snížení jednoho), bylo by mnohem robustnější používat rámec.

Doufám, že to pomůže!

Díky, Joe




  1. Problém s JPA, EclipseLink a mysql rozlišující malá a velká písmena

  2. Jak stáhnout Postgres bytea sloupec jako soubor

  3. password_hash, password_verify, mySQL nedorozumění?

  4. Server WAMP je zelený, ale dostane pouze 404