Seite 1 von 1
MySQL - Daten nur teilweise löschen
Verfasst: 18.04.2011, 09:26
von catcat
Moinsen zusammen,
Ich habe eine DB (ja, echt!) in der gut 1.000 Artikel drin stecken. Jedes hat eine Produktbeschreibung. Am Ende jeder Produktbeschreibung steht ein Satz, den ich überall raus haben will.
Am anfang steht aber immer jeweils etwas anderes.
Wie bringe ich mySQL dazu, mir nur diesen jeweils gleichen String am Ende zu löschen?
Code: Alles auswählen
mysql>SELECT * FROM produktattribute WHERE produktbeschreibung LIKE "%hier_der_zu_tilgende_string";
Nur wie bringe ich es fertig, nur die letzten...sagen wir mal: 50 Zeichen zu löschen und nicht die ganze Produktbeschreibung?

Verfasst:
von

Erfolgreiche und optimale Nutzung mit Magento Shopsystemen!
Nutzen Sie unsere jahrelange Erfahrung mit Magento Shopsystemen und lassen Sie sich beraten!
Lesen Sie die
wichtigsten
Magento-Optimierungsmaßnahmen
oder kontaktieren Sie uns direkt unter:
0511 / 300325-0
Verfasst: 18.04.2011, 09:31
von DanielS
Mit nem Update:
Code: Alles auswählen
update produktattribute set produktbeschreibung = substr(produktbeschreibung,1,length(produktbeschreibung)-50) where produktbeschreibung like '%hier_der_t_string'
(ungetestet)
Verfasst: 18.04.2011, 10:10
von Synonym
Ebenfalls ungetestet:
Code: Alles auswählen
UPDATE produktattribute SET produktbeschreibung=REPLACE(produktbeschreibung, 'hier_der_zu_tilgende_string', 'neuer_string_evtl_leer')
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 18.04.2011, 10:45
von catcat
,1,length
Interessant. Warum ist da ne 1?
Ich finde nirgends ne Dokumentation, wo dieses Attribut erwähnt wird und was man damit alles kaputtmachen kann.
Verfasst: 18.04.2011, 10:57
von DanielS
catcat hat geschrieben:,1,length
Interessant. Warum ist da ne 1?
Ich finde nirgends ne Dokumentation, wo dieses Attribut erwähnt wird und was man damit alles kaputtmachen kann.
Verfasst: 18.04.2011, 11:16
von Synonym
sagen es wir mal in Deutsch

DanielS "entfernt" nicht direkt den hinteren Teil, sondern liest den vorderen Teil aus (Substring) und überschreibt dann alles mit dem zuvor ermittelten vorderen Teil.

Verfasst: 18.04.2011, 11:34
von DanielS
Synonym hat geschrieben:sagen es wir mal in Deutsch

DanielS "entfernt" nicht direkt den hinteren Teil, sondern liest den vorderen Teil aus (Substring) und überschreibt dann alles mit dem zuvor ermittelten vorderen Teil.

So is et.
Wobei ich die Replace-Lösung sogar interessanter finde

Verfasst: 18.04.2011, 16:14
von catcat
Genial. Ich hab eben ne Test-DB angelegt, Text reingeworfen, teilweise mit html drinne und das dann nach Methode DanielS gemacht-->geht^^

Coole Sache. DANKE! Hat mir ne Menge Arbeit erspart.
So weit gehen meine mysql-Kenntnisse einfach nicht. Ich habs mal für die HK-Prüfung teilweise gelernt und gleich nach der Prüfung vergessen. Das war vor zig Jahren.
Verfasst: 21.04.2011, 14:10
von catcat
So. Nu hab ich noch ne Frage^^
Gibt es ne Möglichkeit 2 DBs miteinander zu vergleichen, daß man sofort sieht, wo eine Änderung ist?
Für html, php, etc. gibts ja z.B.
https://winmerge.org/ , wo man gut sieht, wo etwas geändert ist.
Ich habe hier 1 Original-DB und 1 DB mit über 700MB in der irgendwo 1-2 Zeichen fehlen UND DAS MACHT MICH WAHNSINNIG

Verfasst: 21.04.2011, 14:49
von Synonym
Also für Daten selbst kenne ich nur ein kostenpflichtiges:
https://nobhillsoft.com/NHDBCompare.aspx
Die anderen wo ich kenne, vergleichen nur die Struktur, keine Daten.
Ich würde selbst aber wohl winmerge nehmen und beide Exports vergleichen. Bei 2x 700MB dauert das zwar, aber es geht. Hab das schon mit 1 GB-Exports gemacht

Verfasst: 21.04.2011, 14:59
von Synonym
Eventuell auch das... gibt da eine 30-Tage-Version, kenne ich aber auch nicht
https://www.devart.com/dbforge/mysql/datacompare/
Verfasst: 21.04.2011, 19:10
von catcat
Naja...80$ schaff ich grade noch ran. Gelobt sei der Wechselkurs
Dieses Magento geht mir so ganz langsam tierisch auf die Nüsse.
Chuck Norris würde den Server und den shop nur scharf ansehen und die würden schneller laufen als alle google-Rechenzentren zusammen^^
Verfasst: 22.04.2011, 10:54
von mgutt
Warum machst Du Dir nicht gerade ein passendes PHP Script? Kannst ja in ein bestehendes Script reinschreiben, wenn Du Dir ein komplettes Verbinden mit der DB sparen willst und es nur ausführen, wenn Du z.B. den Parameter "XYZ" übergibst. Also z.B. so:
deinedomain.de/index.php?XYZ
und im Script (sicherer wäre allerdings mit einer $_COOKIE Variablen zu arbeiten, die nur Du gesetzt bekommst)
Code: Alles auswählen
if (isset($_GET['XYZ'])) {
// mach was, was nur der admin will ;)
}
Und da packst Du dann eine MySQL Abfrage rein:
Code: Alles auswählen
SELECT t1.text AS text1, t2.text AS text2 FROM (table1 t1, table2 t2) WHERE t1.id = t2.id AND t1.text <> t2.text
Und das schmeißt Du dann eben per while-Schleife und echo aus. z.B. in einem HTML table mit zwei Spalten zum schnellen Sichtvergleich.
Oder willst Du eine Diff-Script, dass die Unterschiede hervorhebt bzw. durchstreicht?
Gruß
Verfasst: 23.04.2011, 13:55
von everflux
Sonst dump doch die Daten und vergleich die Dumps? ("winmerge")
Verfasst: 23.04.2011, 14:10
von catcat
Klar. Ich werde mir über 210.000 Zeilen Kauderwelsch angucken
Ich wollte den shop eigentlich schon noch vor Weihnachten starten.
Ich hab das jetzt mal mit diesem dbforge-tool von devart durchrattern lassen und die überschüssigen texte gelöscht. Gott und devart sei gedankt^^