Import Product Reviews in Magento 2 via SQL

Posted by

当客户看到评论良好的产品时,他们更有可能做出购买决定。

此外,一些搜索引擎给有产品评论的网站比没有产品评论的网站排名更高。

由于 Magento2 不支持导入产品评论的默认功能,我们想出了一种使用 SQL 的快速方法。

review* table structure 产品评论的数据库架构

Magento 1/Magento 2 有两个用于评论的组表

  1. review* tables
  2. rating* tables

review* table structure: 审查表结构

该组包括以下表:

  1. review
  2. review_detail
  3. review_entity
  4. review_entity_summary
  5. review_status
  6. review_store

ERD 看起来像

DB schema for review* tables

在这组表中,review_detail 表存储了评论的基本信息(标题、详细信息、昵称、customer_id 等);review 评论表存储产品 ID 和评论状态;review_entity_summary 表总结了产品的评论(评论数量、总分等).

rating* table structure 评级*表结构

该组包括以下表:

  • rating
  • rating_entity
  • rating_option
  • rating_option_vote
  • rating_option_vote_aggregated
  • rating_store
  • rating_title

ERD 看起来像

该组中最重要的表是 rating_option_vote,其中包含 IP 地址、评分值(1 – 5)、评分类型、客户 ID、产品 ID 等信息。 rating_option_vote_aggregated 表汇总了评分信息,例如获得了多少票 演员、总体百分比等。评级表包括评级属性,如质量、价值、价格和评级。

通过 SQL 导入产品评论

如您所知,产品评论是销售的驱动因素之一,您可能对从其他平台导入产品评论感兴趣。

您可以找到许多用于导入产品评论的付费扩展,但在这里我将分享导入产品评论的 SQL 方法。

第 1 步:准备 SQL

您可以准备下面的 SQL 脚本。 您可以根据您的要求编辑值(注意标有 — 编辑值的变量)。

-- INSERT REVIEW
-- Edit values
SET @PRODUCT_ID 		= 123;
SET @STORE_ID 			= 1;
SET @CUSTOMER_ID 		= NULL;
SET @REVIEW_TITLE 		= 'Lorem Ipsum';
SET @REVIEW_DETAIL 		= 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...';
SET @REVIEW_RATING 		= 5; -- Between 1 to 5
SET @REVIEW_NICKNAME 	= 'John Doe';
SET @REVIEW_CREATED_AT 	= '2019-07-15'; -- OR date in YY-mm-dd HH:ii:ss format

-- No need to Edit
SET @REVIEW_ENTITY_ID   = (SELECT entity_id FROM rating_entity WHERE entity_code = 'product'); -- 1: product, ...
SET @REVIEW_STATUS_ID   = (SELECT status_id FROM review_status WHERE status_code = 'Pending'); -- 1: Approved, 2: Pending, 3: Not Approved

INSERT INTO review SET created_at = @REVIEW_CREATED_AT, entity_id = @REVIEW_ENTITY_ID, entity_pk_value = @PRODUCT_ID, status_id = @REVIEW_STATUS_ID;
SET @REVIEW_ID = (SELECT LAST_INSERT_ID());
INSERT INTO review_detail SET review_id = @REVIEW_ID, store_id = @STORE_ID, title = @REVIEW_TITLE, detail = @REVIEW_DETAIL,	nickname = @REVIEW_NICKNAME, customer_id = @CUSTOMER_ID;
INSERT INTO review_store SET review_id = @REVIEW_ID, store_id = 0;
INSERT INTO review_store SET review_id = @REVIEW_ID, store_id = @STORE_ID;
INSERT INTO rating_option_vote SET option_id = 5, remote_ip = '', remote_ip_long = 0, customer_id = @CUSTOMER_ID, entity_pk_value = @PRODUCT_ID, rating_id = @REVIEW_ENTITY_ID,
review_id = @REVIEW_ID, percent = 100, value = @REVIEW_RATING;

如果要查看产品的相关评论数据,可以使用此 SQL

SET @PRODUCT_ID = 123;
SELECT * FROM review WHERE entity_pk_value = @PRODUCT_ID;
SELECT * FROM review_detail WHERE review_id IN (SELECT review_id FROM review WHERE entity_pk_value = @PRODUCT_ID);
SELECT * FROM review_store WHERE review_id IN (SELECT review_id FROM review WHERE entity_pk_value = @PRODUCT_ID);
SELECT * FROM review_entity_summary WHERE entity_pk_value = @PRODUCT_ID;
SELECT * FROM rating_option_vote WHERE entity_pk_value = @PRODUCT_ID;
SELECT * FROM rating_option_vote_aggregated WHERE entity_pk_value = @PRODUCT_ID;

第 2 步:执行 SQL

准备好具有所需值的 SQL 后,您可以通过 SQL 客户端(PHPMyAdmin、MySQL CLI 或任何服务器端脚本)执行它.

第 3 步:审核评论

上述 SQL 脚本导入处于“待处理”状态的评论。

您可以从管理员审核那些导入的评论。

在管理侧边栏上,MARKETING > User Content > Pending Reviews

在列表中,单击待审核以查看详细信息,并在必要时进行编辑。

要批准待审核,请将状态从“Pending(待审核)”更改为“Approved(已批准)”。 要拒绝审核,请选择“(Not Approved)未批准”。

完成后,点击保存评论。

为简洁起见,我已经展示了如何为一种产品导入产品评论。 但是您可以使用一些服务器端脚本从 CSV 读取数据并遍历行并通过上面的 SQL 导入。

本文参考:https://blog.magepsycho.com/import-product-reviews-in-magento-via-sql/