Shopvote Produktbewertungen in Gambio übertragen

Sollen via Shopvote akquirierte Produktbewertungen in native Gambio-Produktbewertungen überführt werden? Das geht mit einem einfachen SQL-Befehl. So bleiben Produktbewertungen erhalten, wenn man Shopvote entfernt oder das Shopsystem wechselt und nur die nativen Gambio-Produktbewertungen in den neuen Shop überträgt.

Shopvote für Shopify & WooCommerce

Nach dem Wechsel von Gambio zu Shopify oder zu WooCommerce muss man keineswegs auf Shopvote verzichten. Es gibt sowohl Möglichkeiten der Shopvote Integration in Shopify als auch ein Shopvote Plugin für WooCommerce.

Da Shopify nativ keine Produktbewertungen an Bord hat und man ohnehin eine App benötigt (es gibt zahlreiche kostenlose, zum Beispiel Judge.me), bietet es sich an, die Shopvote-Lösungen für Shopify zu verwenden.

Shopvote vs. Gambio Produktbewertungen

Mühevoll in Gambio gesammelte Produktbewertungen sind unter Umständen auf 2 Tabellen aufgeteilt:

  • Via Shopvote akquirierte Bewertungen befinden sich in den Shopvote-Datenbanktabellen
  • Via Gambio-eigenem Bewertungssystem erhaltene Rezensionen befinden sich in den Gambio-Standardtabellen reviews und reviews_description.

Vor dem Wechsel des Shopsystems möchte man diese möglicherweise vereinheitlichen, um die Datenübernahme einfacher zu gestalten. Das betrifft natürlich nicht nur Shopify und WooCommerce. Auch beim Wechsel von Gambio zu JTL-Shop ist der Gambio CSV-Export sämtlicher Produktbewertungen aus einer Quelle sehr angenehmer zu händeln.

Mit dem folgenden SQL-Befehl werden deutschsprachige Produktbewertungen aus den Shopvote-Tabellen in die Gambio-Datenbank-Tabellen übertragen und können von dort aus gesammelt exportiert werden:

-- Sprach-ID fest: 2 (Deutsch)
SET @LANG_ID := 2;

-- Mapping-Tabelle (merkt importierte Reviews per review_uid)
CREATE TABLE IF NOT EXISTS shopvote_reviews_to_reviews (
  review_uid VARCHAR(32) NOT NULL,
  reviews_id INT(11) NOT NULL,
  PRIMARY KEY (review_uid),
  KEY (reviews_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

-- Nur zuordenbare & noch nicht importierte Bewertungen nach reviews übernehmen
INSERT INTO reviews (
  products_id,
  customers_id,
  customers_name,
  reviews_rating,
  date_added,
  reviews_read
)
SELECT
  p.products_id,
  NULL AS customers_id,
  LEFT(s.author, 64) AS customers_name,
  GREATEST(1, LEAST(5, s.rating_value)) AS reviews_rating,
  CAST(CONCAT(s.created, ' 00:00:00') AS DATETIME) AS date_added,
  0 AS reviews_read
FROM shopvote_reviews s
JOIN products p
  ON p.products_ean = s.gtin
LEFT JOIN shopvote_reviews_to_reviews map
  ON map.review_uid = s.review_uid
WHERE map.review_uid IS NULL;

-- Mapping (review_uid -> reviews_id) nachtragen
INSERT IGNORE INTO shopvote_reviews_to_reviews (review_uid, reviews_id)
SELECT
  s.review_uid,
  r.reviews_id
FROM shopvote_reviews s
JOIN products p
  ON p.products_ean = s.gtin
JOIN reviews r
  ON r.products_id    = p.products_id
 AND r.customers_name = LEFT(s.author, 64)
 AND r.date_added     = CAST(CONCAT(s.created, ' 00:00:00') AS DATETIME)
 AND r.reviews_rating = GREATEST(1, LEAST(5, s.rating_value))
LEFT JOIN shopvote_reviews_to_reviews map
  ON map.review_uid = s.review_uid
WHERE map.review_uid IS NULL;

-- Texte in reviews_description mit languages_id = 2 anlegen
INSERT IGNORE INTO reviews_description (reviews_id, languages_id, reviews_text)
SELECT
  map.reviews_id,
  @LANG_ID AS languages_id,
  s.review_text
FROM shopvote_reviews_to_reviews map
JOIN shopvote_reviews s
  ON s.review_uid = map.review_uid;
«

Schreiben Sie einen Kommentar