Wie Werte in SQL Tabelle automatisch ersetzen?

Programmierung, Templatedesign & Codeschnipsel
Antworten
Benutzeravatar
degraf
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 13503
Registriert: 21. Sep 2009 12:18
Land: Deutschland
Hat sich bedankt: 41 Mal
Danksagung erhalten: 45 Mal

Wie Werte in SQL Tabelle automatisch ersetzen?

Beitrag von degraf » 25. Sep 2019 12:16

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?



Benutzeravatar
koshop
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 3738
Registriert: 4. Sep 2012 13:23
Hat sich bedankt: 27 Mal
Danksagung erhalten: 190 Mal

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Beitrag von koshop » 25. Sep 2019 12:44

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.

Benutzeravatar
degraf
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 13503
Registriert: 21. Sep 2009 12:18
Land: Deutschland
Hat sich bedankt: 41 Mal
Danksagung erhalten: 45 Mal

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Beitrag von degraf » 25. Sep 2019 12:49

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!

basti
Beiträge: 134
Registriert: 6. Feb 2008 13:57

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Beitrag von basti » 25. Sep 2019 15:11

Funktioniert aber nur wenn sich die alten und neuen IDs nicht überschneiden.

Benutzeravatar
degraf
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 13503
Registriert: 21. Sep 2009 12:18
Land: Deutschland
Hat sich bedankt: 41 Mal
Danksagung erhalten: 45 Mal

Re: Wie Werte in SQL Tabelle automatisch ersetzen?

Beitrag von degraf » 25. Sep 2019 15:41

Das passt, da habe ich mit einem geeigneten hohen autoincrement vorgesorgt.

Antworten

Zurück zu „HTML, PHP, CSS, & Co.“