Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các sản phẩm Magento nhập từ cơ sở dữ liệu bằng cách sử dụng truy vấn SQL

Tôi sẽ không đăng toàn bộ truy vấn SQL vì cố gắng lấy dữ liệu ra khỏi Magento theo cách thủ công thông qua cơ sở dữ liệu là quá tẻ nhạt, nhưng tôi sẽ nói rằng bạn đang đi đúng hướng. Để cắt giảm số lượng liên kết cho loại thứ này, tôi truy xuất thuộc tính của mình từ bảng eav và sử dụng chúng trực tiếp. Điều này có nghĩa là truy vấn của tôi sẽ chỉ hoạt động trên của tôi cài đặt Magento, nhưng đó không phải là vấn đề đối với tôi.

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

Lợi nhuận:

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

Bây giờ bạn đã sẵn sàng cho sự tẻ nhạt! Đối với mỗi mã thuộc tính, hãy kết hợp với bảng phụ trợ (catalog_product_entity_$BACKEND_TYPE ) trên ID thuộc tính đã cho của bạn. Đối với tôi, điều này sẽ biến một truy vấn sku / name / id (truy vấn của bạn thực sự không cần kết hợp với các sản phẩm, vì bạn sử dụng entity_id để thực hiện liên kết ...) thành:

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;

Tiếp tục thêm các tập hợp mệnh đề tham gia mới | where-mệnh đề | select-mệnh đề cho đến khi bạn có tất cả các liên kết mà bạn muốn ban đầu.

Điều đó nói rằng, Jonathan đúng rằng việc sử dụng khuôn khổ Magento để quản lý dữ liệu này sẽ dễ dàng hơn nhiều so với việc làm thủ công thông qua cơ sở dữ liệu. Trừ khi bạn có một số lượng lớn sản phẩm cần phải tải tất cả cùng một lúc (lưu ý rằng có hai giả định ở đó và bạn có thể làm việc để giảm bớt một trong hai giả thiết), thì việc sử dụng khuôn khổ sẽ mạnh mẽ hơn nhiều.

Hy vọng điều đó sẽ hữu ích!

Cảm ơn, 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. Chấm dứt các kết nối mysql nhàn rỗi

  2. Nối 4 bảng trong truy vấn SQL

  3. PHP - Khớp các cụm từ tìm kiếm mysql_query

  4. Sử dụng đối chiếu nhị phân có những tác dụng gì?

  5. Làm thế nào để làm tròn DateTime trong MySQL?