Seite 1 von 1

Wie Werte in SQL Tabelle automatisch ersetzen?

Verfasst: 25. Sep 2019 12:16
von degraf
Durch den Umzug auf eine aktuelle JTL Wawi Version, habe ich das Problem, dass alle Artikel im modified Shop neu angelegt werden und sich damit die Artikel IDs ändern.
Das lässt sich leider *nicht* umgehen.
An den 301er Umleitungen arbeite ich schon, das wird wohl funktionieren.

Dadurch habe ich dann auch eine csv mit der Zuordnung "Alte Artikel ID" auf "Neue Artikel ID".
Nun möchte ich (zur Zeit per phpMyAdmin) in der Crossselling Tabelle "products_xsell" alle alten Artikel IDs mit Hilfe der csv durch die neuen IDs irgendwie ersetzen.

Hat jemand eine Idee, wie das funktionieren kann?
Mit einem direkten SQL Befehl oder Export/Import und irgendwelche Tools?

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Verfasst: 25. Sep 2019 12:44
von koshop
Gibt es mehrere Möglichkeiten. Entweder in irgendeiner Skriptsprache ein Skript schreiben, das die CSV ausliest und dann die Werte in die Tabelle schreibt. Wenn du sowas nicht programmieren kannst, dann würde ich einfach eine Liste von SQL Anweisungen erstellen und importieren.

Letztendlich wäre ja die SQL Abfrage ungefähr so:

UPDATE products_xsell SET ID = 'neueid' WHERE ID = 'alteid';

D.h. wenn du jetzt eine csv Datei hast mit den Werten neueid und alteid dann könntest du die z.B. irgendwo öffnen z.B: in Excel oder Notepad+ und dann mit Suchen und ersetzen oder einfügen einer Tabellenzeile dir diese SQL Anweisung basteln und dann importieren. Also statt:

neu_id; alte_id
12345; 54321
23456; 65432

Dann draus basteln:
UPDATE products_xsell SET ID = '12345' WHERE ID = '54321';
UPDATE products_xsell SET ID = '23456' WHERE ID = '65432';

Ich würde das z.B. praktisch so machen:
1. csv Datei in Excel öffnen
2. Neue Tabellenzeile ganz am Anfang, dort dann überall
UPDATE products_xsell SET ID = '
3. Neue Tabellenzeile zwischen den beiden Werten. Dort dann WHERE ID = '
4. Neue Tabellenzeile am Schluss. Dann dort ';
Anschließend speichern als csv. mit | als Trennzeichen. Dann in Notepad öffnen und mit suchen und ersetzen alle | löschen. Und schon hast du eine Liste mit SQL Anweisungen die du importieren kannst.

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Verfasst: 25. Sep 2019 12:49
von degraf
Wenn du sowas nicht programmieren kannst
Genau das ist mein Problem, ich bin da absolut eingerostet und die Zeit fehlt.
Deswegen "hampel" ich auch schon die ganze Zeit mit csv und Tabellen rum.
Anschließend speichern als csv. mit | als Trennzeichen. Dann in Notepad öffnen und mit suchen und ersetzen alle | löschen.
Sehr gute Idee, das hatte mir am Ende noch gefehlt!

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Verfasst: 25. Sep 2019 15:11
von basti
Funktioniert aber nur wenn sich die alten und neuen IDs nicht überschneiden.

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Verfasst: 25. Sep 2019 15:41
von degraf
Das passt, da habe ich mit einem geeigneten hohen autoincrement vorgesorgt.