Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Magento-Produkte werden mithilfe einer SQL-Abfrage aus der Datenbank importiert

Ich werde nicht die gesamte SQL-Abfrage posten, da es viel zu mühsam ist, Daten manuell über die Datenbank aus Magento herauszuholen, aber ich werde sagen, dass Sie auf dem richtigen Weg sind. Um die Anzahl der Joins für solche Dinge zu reduzieren, rufe ich meine attribute_ids aus der eav-Tabelle ab und verwende sie direkt. Das bedeutet, dass meine Abfrage nur auf my funktioniert Installation von Magento, aber das war für mich kein Problem.

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

Ausbeuten:

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

Jetzt sind Sie bereit für Langeweile! Verknüpfen Sie für jeden Attributcode mit der Back-End-Tabelle (catalog_product_entity_$BACKEND_TYPE ) für Ihre angegebene Attribut-ID. Für mich würde dies eine sku/name/id-Abfrage (Ihre Abfrage muss eigentlich nicht mit Produkten verbunden werden, da Sie die entity_id verwenden, um die Verbindung herzustellen ...) in:

umwandeln
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;

Fahren Sie mit dem Hinzufügen neuer Join-Anweisung|Where-Klausel|Select-Klausel-Sets fort, bis Sie alle Joins haben, die Sie ursprünglich wollten.

Allerdings hat Jonathan Recht, dass die Verwaltung dieser Daten mit dem Magento-Framework viel einfacher wäre, als dies manuell über die Datenbank zu tun. Sofern Sie nicht eine extreme Anzahl von Produkten haben, die Sie auf einmal laden müssen (beachten Sie, dass es zwei Annahmen gibt, und Sie daran arbeiten können, eine davon zu reduzieren), wäre es weitaus robuster, das Framework zu verwenden.

Hoffe das hilft!

Danke, Joe