Mysql
 sql >> Database >  >> RDS >> Mysql

I prodotti Magento vengono importati dal database utilizzando la query SQL

Non pubblicherò l'intera query SQL perché è troppo noioso cercare di estrarre manualmente i dati da Magento tramite il database, ma dirò che sei sulla strada giusta. Per ridurre il numero di join per questo genere di cose, recupero i miei attributi_id dalla tabella eav e li uso direttamente. Ciò significa che la mia query funzionerà solo su mio installare Magento, ma per me non è stato un problema.

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

Rendimento:

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

Ora sei pronto per la noia! Per ogni codice attributo, unisciti alla tabella di backend (catalog_product_entity_$BACKEND_TYPE ) sull'ID attributo fornito. Per me, questo trasformerebbe una query sku/name/id (la tua query in realtà non ha bisogno di unirsi a prodotti, poiché usi entity_id per fare il join...) in:

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;

Continua ad aggiungere nuovi set di clausole di join|where-clause|select-clause finché non avrai tutti i join che volevi originariamente.

Detto questo, Jonathan ha ragione sul fatto che l'utilizzo del framework Magento per gestire questi dati sarebbe molto più semplice che farlo manualmente tramite il database. A meno che tu non abbia un numero estremo di prodotti che devi caricare tutti in una volta (nota che ci sono due presupposti e puoi lavorare per ridurli), sarebbe molto più robusto usare il framework.

Spero di esserti stato d'aiuto!

Grazie, Joe