phpMyadmin: suchen und ersetzen

In dem Artikel möchte ich zeigen, wie auch unerfahrene User mittels phpMyAdmin häufig vorkommende Ausdrücke schnell und vergleichsweise leicht in ihrer Datenbank ersetzen können.

Ich wollte gerne einen Teil einer häufig vorkommenden Amazon-URL verändern, welche ich in jedem Artikel eingebaut hatte. Da es sich um über 100 Artikel handelt, wäre die händische Änderung der URL ein nicht zu vertretender Aufwand gewesen. So habe ich mich nach einer Lösung umgeschaut, wie ich die URL direkt in der Datenbank bearbeiten kann.

1. Schritt: Finden des Begriffs

Zunächst einmal ruft ihr Eure Datenbank mit Hilfe von phpMyAdmin auf. In fast allen Fällen stellt der Hoster Eures Webpaketes einen Datenbankzugang über phpMyAdmin zur Verfügung. Falls nicht, wechselt den Hoster 🙂

Mit einem Klick auf „Struktur“ erhaltet ihr einen Überblick über Eure Tabellen. Danach geht ihr auf den Punkt „Suche“, um dort zu ermitteln, wo und wie häufig der Begriff vorkommt, den ihr ersetzen wollt. Dabei setzt ihr Euren Suchbegriff in %….% und wählt „genau diese Zeichenkette“. Weiter unten selektiert Ihr die Tabellen, in denen nach dem Begriff gesucht werden soll. Hier sollten zunächst alle ausgewählt werden.

Wenn ihr den Suchbegriff richtig eingegeben habt, werdet Ihr ein Suchergebnis erhalten, dass ähnlich wie dieses ausschaut. Überlicherweise sollten Treffer in der Tabelle „wp_posts“ zu finden sein. Denn dort sind die Inhalte Eurer Postings gespeichert. In meinem Screenshot werden noch weitere Treffer aufgelistet, die sich durch die Verwendung des Plugins „Broken Link Checker“ ergeben.

Nun wisst Ihr, in welchen Tabellen Eurer Suchbegriff vorkommt. Nun müsst Ihr diese Tabellen aufrufen. In unserem Fall rufen wir die Tabelle „wp_posts“ auf (Hinweis: die Tabelle heißt bei uns „wpwmz_posts“, weil wir irgendwann mal den Tabellen-Präfix vom Standard-Wert „wp_“ zu „wpwmz_“ geändert haben. Dadurch also bitte nicht verwirren lassen.)

Dort suchen wir nach der Spalte, in dem unser Suchbegriff vorkommt. In unserem Fall kommt er ausschließlich in der Spalte „post_content“ vor.

2. Schritt: BackUp der Datenbank anlegen

Nun kennen wir den Tabellennamen und die Spalte, in dem der zu ersetzende Begriff vorkommt. Wir können also an das Ersetzen gehen. Bevor wir dies tun, ziehen wir uns den Ist-Zustand der gesamten MySQL-Datenbank als Backup. Das können wir entweder über den Punkt „Exportieren“ in der horizontalen Navigation erledigen oder über ein Plugin wie z.B. „BackWPUp“. Mit diesem können regelmäßige Updates sowohl des FTP-Verzeichnisses als auch der MySQL-Datenbank erstellt werden.

3. Schritt: Ersetzen des Suchbegriffs

Nachdem wir das Backup angelegt haben, können wir an das Ersetzen des gewünschten Begriffes gehen. Dafür ruft ihr den Punkt „SQL“ in der horizontalen Navigation auf.

Die MySQL-Query für Suchen & Ersetzen lautet:

UPDATE tablename SET field = REPLACE(field, "findstring", "replacestring")

In unserem Fall werden die Parameter „tablename“ mit „wpwmz_posts“ und „field“ mit der Tabellenspalte „post_content“ ersetzt. Für den zu ersetzenden String habe ich einfach mal unterstellt, dass ich die URL von amazon (=findstring) auf ebay.de (=replacestring) umstellen möchte.

Es ergibt sich also

UPDATE wpwmz_posts SET post_content = REPLACE(post_content, "www.amazon.de/", "www.ebay.de/")

Dann bestätigt Ihr diesen Befehl mit „OK“ unten rechts. Das wars!

Wenn die URL vorher http://www.amazon.de/gp/product123456&tag=webmaster-zentrale hieß, heißt sie nun nach dem Ersetzen-Vorgang http://www.ebay.de/gp/product123456&tag=webmaster-zentrale

Nach diesem Muster geht ihr dann alle Tabellenfundorte durch, bis ihr in allen relevanten Tabellen Euren Begriff ersetzt habt.

Veröffentlicht von

Thomas

Thomas beschäftigt sich als Webmaster seit 2006 mit der Erstellung eigener Webseiten. Er nutzt dabei hauptsächlich WordPress.

7 Gedanken zu „phpMyadmin: suchen und ersetzen“

  1. Irgendwie kriege ich das nicht hin.

    Meine Zeile lautet

    UPDATE `wp_postmeta` SET `meta_value` = REPLACE (`meta_value`, „!–more–„, „“) WHERE `meta_key` = ‚laterpay_post_teaser‘

    aber irgendwas stimmt da nicht

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‚)‘ at line 1

    Beim Drüberhalten über das rote Dreieck klingt es so, als ob er das REPLACE als neuen Befehl nehmen will.

  2. Tja, wenn man das früher gewusst hätte, wäre viel Zeig erspart geblieben. Vielen Dank für die Anleitung!

  3. Hallo Thomas,

    ich habe aus historischen Gründen verkleinerte Altlasten in meinen Bildern, die ich gerne loswerden möchte. Zum Teil sind die auch in die Artikel eingebunden.

    Ich würde also gerne den Dateiverweis in der Tabelle _postmeta, Spalte meta_value mit dem Namen IMG0815-800×422.jpg in IMG0815.jpg umbenennen.

    Das hat soweit auch ganz simpel mit Better Search Replace funktioniert, da viele Dateien normale Seitenverhältnisse hatten (-1024×768.jpg z.B.).

    Nun habe ich ne Masse an Resten. Die haben krumme Seitenverhältnisse und entsprechende Namen wie IMG0815-1280×534.jpg, etc.

    Klar, nimmste halt einen Testeditor und den Dump, arbeiteste mit regulären Ausdrücken, wie schwer kann das sein?
    Nun… ich bin zu blöd dafür.

    Ich würde jetzt gerne mit Wildcards, Platzhaltern, wie man es auch nennen will, nach %-%%%x%%%.%%% suchen und diese Zeichenfolgen löschen. Das Prozentzeichen ist da nicht korrekt, ist klar. Aber ich packe es gerade überhaupt nicht mehr.

    Kannst Du mir auf die Sprünge helfen?

    Danke!
    Gruß
    Michael

  4. Hallo Thomas,

    ich will im XenForo XF 2.2 einen Nutzernamen eines gelöschten Accounts in der Datenbank suchen und durch einen Phantasienamen ersetzen/anonymisieren. Hast Du einen Tipp für mich?

    Vielen Dank und viele Grüße
    Thomas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.