Alle Bestellungen und Kunden in eine andere DB kopieren

Hallo zusammen

Eine Frage an SQL Cracks (ich bin leider „noch“ keiner :wink:

Ich habe folgenden Befehl gefunden, mit welchem man alle Bestellungen per SQL löschen kann.

delete ot2.*, ot.*, oli.*, odp.*, od.*, oc.*, oa.*, o.* from `order` o 
left join  order_address oa on o.id = oa.order_id 
left join  order_customer oc on o.id = oc.order_id 
left join  order_delivery od on o.id = od.order_id 
left join  order_delivery_position odp on od.id = odp.order_delivery_id 
left join  order_line_item oli on o.id = oli.order_id 
left join  order_tag ot on o.id = ot.order_id 
left join  order_transaction ot2 on o.id = ot2.order_id;

oder Kunden

delete cwp.*, cw.*, ct.*, cr.*, ca.*, c.* from customer c 
left join customer_address ca on c.id = ca.customer_id 
left join customer_recovery cr on c.id = cr.customer_id 
left join customer_tag ct ON c.id = ct.customer_id 
left join customer_wishlist cw on c.id = cw.customer_id 
left join customer_wishlist_product cwp on cw.id = cwp.customer_wishlist_id;

Ich möchte nun aber gerne alle Bestellungen von Datenbank 1 in Datenbank 2 kopieren. Die Struktur von DB 2 ist dabei bereits vorhanden und die Tabelle ist leer. Ich denke anstatt dem delete könnte ich sicher mit fast identischen Code und dem Insert Befehl mein gewünschtes Ergebnis erreichen.

Vielleicht kann mir hier jemand ein kurzes Beispiel nennen?

Herzlichen Dank im Voraus
LG

Ich kenne mich mit der Showpare-DB nicht aus, aber wenn die Befehle wirklich alel Bestellungen und Kunden löschen, solltest du auch auf selben Wege die Daten importieren können.
Müsstest anstelle des „Delete“ ein „Insert into“ nutzen und dann noch die Datenbankverbindungen mit einbinden.

Besten Dank für Deine Antwort. Soweit bin ich auch schon gekommen, jedoch geht es mir vielmehr um die Formatierung des genauen Befehls.

Ich habe z.B. folgendes Beispiel gefunden. Doch wie baue ich das nun in meinen Code ein?

INSERT INTO DB2 (`column1`, `column2`)
  SELECT
    `column1`,
    `column2`
  FROM source_table;

Bevor ich da meine ganze DB zerhacke, frage ich lieber hier nochmals nach. :wink:

Ich habs mal so versucht. Ergibt aber einen Fehler :woozy_face:

INSERT INTO ch77807_sw6.customer
SELECT c., ca., cr., ct., cw., cwp. FROM ch77807_sw646.customer c
LEFT JOIN ch77807_sw646.customer_address ca ON c.id = ca.customer_id
LEFT JOIN ch77807_sw646.customer_recovery cr ON c.id = cr.customer_id
LEFT JOIN ch77807_sw646.customer_tag ct ON c.id = ct.customer_id
LEFT JOIN ch77807_sw646.customer_wishlist cw ON c.id = cw.customer_id
LEFT JOIN ch77807_sw646.customer_wishlist_product cwp ON cw.id = cwp.customer_wishlist_id;

Kann mir da mal einer unter die Arme greifen?

Oder einfach nur so?

INSERT INTO ch77807_sw6.customer
SELECT * FROM ch77807_sw646.customer;

Das würde funktionieren, allerdings weiss ich dann nicht, ob ich alle benötigten Daten erhalten würde.

Ich kann dir leider nicht groß helfen, da ich mich wie bereits erwähnt mit der Shopware-DB nicht auskenne und dir somit nicht versichern kann ob die Logik gewährleistet ist.

Da du selbst auch nicht mit der DB vertraut bis, würde ich dir dazu raten es sein zu lassen :wink:

Was spricht den dagegen die Export/Import Funktion von Shopware zu nutzen?
Hiermal ein Link für den Export von Bestellungen: Shopware 6 - Tutorials & FAQs - Bestellungen exportieren.

Wenn das alle Tabellen sind, gibt es in PHPmyAdmin die Möglichkeit des Export und Import.

Klar, das würde möglicherweise auch gehen. Es liegen jedoch beide DBs auf dem selben Server und somit sollte das Kopieren per SQL eigentlich die einfachere und schnellere Variante sein (wenn man den korrekten Syntax kennt) :wink:

Oft gibt es bei Import und Export über phpMySql Probleme. Nur schon das Löschen von Kunden oder Bestellungen: Wenn man in phpMySql „Leeren“ anwählt, erhält man sofort eine Fehlermeldung wegen den diversen Abhängigkeiten. Ich habs nur über den oben genannten SQL Befehl geschafft.

Ich habe nun mal die Tabellen

Customer
customer_address
customer_recovery
customer_tag
customer_wishlist
ustomer_wishlist_product

in DB1 durch die gefüllten von DB2 ersetzt (über phpMyAdmin). Das funktionierte nachdem ich die bereits vorhandenen Datenbanken in DB1 umbenennt und dann durch diejenigen aus DB2 ersetzt habe. Nur die Daten importieren, gibt ja leider den ID Fehler. Leider scheinen die UUIDs über diese Tabellen hinaus verknüft zu sein. Denn obwohl ich alle Tabellen erstellt habe, erscheint kein einziger Kunde im Admin. Puuuh, das Ding ist komplizierter als gedacht. Falls jemandem noch was einfällt, ich wäre überglücklich :woozy_face: