DB: Daten finden und ersetzen (REPLACE) ?!
DB: Daten finden und ersetzen (REPLACE) ?!
Hallo,
Ich habe unser Portal aktualisiert.
Wenn man vorher z.B. eine Grafik im Portal einbinden wollte, sah der Befehl so aus: img[XY]img.
Seit der aktualisiert sieht der Befehl aber so aus: [img]XY[/img].
Die Daten wurden in die DB übernommen.
Jetzt würde ich gerne die alten Daten in der DB suchen und durch die neue Schreibweise ersetzen.
Gibts da was an Tips, Tricks, Tools etc. ?
Ich danke für jede hilfreiche Antwort.
Mfg
Condor
Ich habe unser Portal aktualisiert.
Wenn man vorher z.B. eine Grafik im Portal einbinden wollte, sah der Befehl so aus: img[XY]img.
Seit der aktualisiert sieht der Befehl aber so aus: [img]XY[/img].
Die Daten wurden in die DB übernommen.
Jetzt würde ich gerne die alten Daten in der DB suchen und durch die neue Schreibweise ersetzen.
Gibts da was an Tips, Tricks, Tools etc. ?
Ich danke für jede hilfreiche Antwort.
Mfg
Condor
- oxpus
- Ehemaliges Teammitglied
- Beiträge: 5389
- Registriert: 03.02.2003 12:33
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ich nehme mal an, daß "XY" immer unterschiedlich ist, sofern es unterschiedliche Images sind?
Dann müsste ich so aus dem Stehgreif passen...
Wenn die Inhalte gleich sind, kann man folgendes machen:
Mit ...replace()... ersetzt die Datenbank in dem angegebenen Feld den darin enthaltenen Vorher_String durch den Nachher_String.
Das select um das replace herum sorgt dafür, daß der gesamte geänderte Inhalt zurückkommt, um dann mit der update-Anweisung neu in das Feld geschrieben werden zu können.
Jetzt schlag mich aber nicht, wenn vielleicht bei dem select noch die Tabelle angegeben werden muss. Ist lange her, als ich das zuletzt benutzte...
Vielleicht hilft dieser Ansatz ja schon, ansonsten kann man die Inhalte mittels eines Datenbank-Client ändern, nur kenne ich keinen ausser MySQL Front und dieser kann es nach meinem Wissen auch nicht...
Dann müsste ich so aus dem Stehgreif passen...
Wenn die Inhalte gleich sind, kann man folgendes machen:
Code: Alles auswählen
UPDATE tabellenname SET feldname = select replace(feldname, 'Voher_String', 'Nachher_String') WHERE bedingungen;
Das select um das replace herum sorgt dafür, daß der gesamte geänderte Inhalt zurückkommt, um dann mit der update-Anweisung neu in das Feld geschrieben werden zu können.
Jetzt schlag mich aber nicht, wenn vielleicht bei dem select noch die Tabelle angegeben werden muss. Ist lange her, als ich das zuletzt benutzte...
Vielleicht hilft dieser Ansatz ja schon, ansonsten kann man die Inhalte mittels eines Datenbank-Client ändern, nur kenne ich keinen ausser MySQL Front und dieser kann es nach meinem Wissen auch nicht...
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
- Olli Oberhausen
- Mitglied
- Beiträge: 561
- Registriert: 22.10.2004 01:03
- Wohnort: Oberhausen NRW
- Kontaktdaten:
Vorher:" img[XY]img ".
Nacher:" [img]XY[/img] ".
UPDATE phpbb_posts_text SET post_text = replace(post_text, ' img[', ' [img]') WHERE post_text LIKE '% img[%';
UPDATE phpbb_posts_text SET post_text = replace(post_text, ']img ', '[/img] ') WHERE post_text LIKE '%]img %';
Fehlt nur noch die bbcode_uid falls es ein phpBB ist
Bitte alle Leerzeichen beachten... Dann sollte es funktionieren.
Aber wie immer: Vorher db-backup machen
Olli
Nacher:" [img]XY[/img] ".
UPDATE phpbb_posts_text SET post_text = replace(post_text, ' img[', ' [img]') WHERE post_text LIKE '% img[%';
UPDATE phpbb_posts_text SET post_text = replace(post_text, ']img ', '[/img] ') WHERE post_text LIKE '%]img %';
Fehlt nur noch die bbcode_uid falls es ein phpBB ist
Bitte alle Leerzeichen beachten... Dann sollte es funktionieren.
Aber wie immer: Vorher db-backup machen
Olli
Zuletzt geändert von Olli Oberhausen am 09.01.2007 18:34, insgesamt 2-mal geändert.
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
Code: Alles auswählen
WHERE post_text LIKE '% ]img %';
- Olli Oberhausen
- Mitglied
- Beiträge: 561
- Registriert: 22.10.2004 01:03
- Wohnort: Oberhausen NRW
- Kontaktdaten:
Rischtig - und geändert...
Olli
Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
Hallo Leute,
@Olli Oberhausen:
Hat wunderbar geklappt. Vielen Dank an euch !
Hier noch ein Codesnipsel, für die, die auch mal sowas benötigen:
@Olli Oberhausen:
Hat wunderbar geklappt. Vielen Dank an euch !
Hier noch ein Codesnipsel, für die, die auch mal sowas benötigen:
Code: Alles auswählen
<?php
$server = "SERVER";
$user = "USER";
$pass = "PASSWORD";
$dbase = "DBASE";
$tabelle = "TABLE";
$spalte = "SPALTE";
$conn = @mysql_connect($server, $user, $pass);
if($conn)
{
mysql_select_db($dbase, $conn);
}
else
{
die("<B>Etwas läuft hier schief!!!");
}
$search_text = "img[";
$replace_text = "[img]";
$sql = "UPDATE $tabelle ";
$sql.= "SET $spalte = ";
$sql.= "REPLACE($spalte, \"$search_text\", \"$replace_text\") ";
$result = mysql_query($sql, $conn);
?>
- Olli Oberhausen
- Mitglied
- Beiträge: 561
- Registriert: 22.10.2004 01:03
- Wohnort: Oberhausen NRW
- Kontaktdaten:
Ja super....Condor hat geschrieben:
Hat wunderbar geklappt. Vielen Dank an euch !
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio