Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Os produtos Magento são importados do banco de dados usando a consulta SQL


Não vou postar toda a consulta SQL porque é muito tedioso tentar obter dados do Magento manualmente através do banco de dados, mas direi que você está no caminho certo. Para reduzir o número de junções para esse tipo de coisa, recupero meus attribute_ids da tabela eav e os uso diretamente. Isso significa que minha consulta funcionará apenas em meu instalação do Magento, mas isso não foi um problema para mim.
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');

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

Agora você está pronto para o tédio! Para cada código de atributo, junte-se à tabela de back-end (catalog_product_entity_$BACKEND_TYPE ) em seu ID de atributo fornecido. Para mim, isso transformaria uma consulta sku/name/id (sua consulta na verdade não precisa se unir a produtos, já que você usa o entity_id para fazer a junção...) em:
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;

Continue adicionando novos conjuntos join-statement|where-clause|select-clause até que você tenha todas as junções desejadas originalmente.

Dito isso, Jonathan está correto ao dizer que usar o framework Magento para gerenciar esses dados seria muito mais fácil do que fazê-lo manualmente através do banco de dados. A menos que você tenha um número extremo de produtos que precisa carregar de uma só vez (observe que existem duas suposições, e você pode trabalhar para reduzir qualquer uma delas), seria muito mais robusto usar a estrutura.

Espero que ajude!

Obrigado, José