Wie suche und ersetze ich alle Instanzen einer Zeichenfolge in einer Datenbank?

Lesezeit: 5 Minuten

Ich habe eine Zeichenfolge, die tausende Male in einer WordPress-Installation (dem Namen eines Servers) über mehrere Spalten, Datensätze und Tabellen hinweg enthalten ist.

Ich möchte es mit dem Standort eines anderen Servers aktualisieren – wir verschieben den Inhalt.

Die Quelle wäre also so etwas wie http://my-server1/some/link/to/somethingund ich möchte es durch ersetzen http://mein-anderer-server/some/link/to/something. Ich möchte diesen Vorgang im Wesentlichen für jede Instanz von wiederholen http://mein-server1.

Gibt es eine einfache Möglichkeit, dies in MySQL zu tun? Ein Werkzeug? Oder muss ich leider jeden Datensatz problematisch aktualisieren?

Danke,

  • Diese Art von Daten (die Daten sollten zumindest absolute Pfade sein) in einer Datenbank zu haben, ist eine ziemlich schlechte Idee, da Sie sie ändern müssen, wenn Sie umziehen. Warum haben Sie die URL der Website überhaupt in einer WordPress-Installation? Es sollte nur die eine globale Standortpräferenz vorhanden sein.

    – Michael Köhler

    19. Juni 2012 um 17:08 Uhr

Eine grobe (aber effektive) Methode wäre, das Schema in eine Datei zu kopieren, das Suchen-und-Ersetzen sorgfältig anzuwenden und dann erneut zu importieren.

Das habe ich übrigens heute gemacht 🙂

  • Schön, dass es hilft. Stellen Sie nur sicher, dass Sie den Ersatz sorgfältig anwenden und nur das ändern, was Sie wirklich wollen.

    – Cherouvim

    7. Mai 2009 um 18:06 Uhr

  • Wie wäre es mit der Situation, wenn ich mindestens 2000 statt einer ersetzen muss? Kannst du bitte helfen?

    – SachinKRaj

    20. Mai 2015 um 10:16 Uhr

  • @SachinKRaj: Ich würde sehr vorsichtig ein Shell-Skript mit 2000 schreiben sed Aussagen.

    – Cherouvim

    20. Mai 2015 um 11:53 Uhr

  • Dies ist eine gute Methode für einzelne einfache Werte, wird aber wahrscheinlich in einigen Fällen von serialisierten Array-Daten fehlschlagen, wo Sie auch die Zeichenanzahl der Zeichenfolge ersetzen müssen. ( wp hat einige davon in default db )

    – Obmerk Kronen

    26. Januar 2018 um 3:34 Uhr


  • Wie bereits erwähnt, schlägt dies bei SERIALISIERTEN Daten fehl. Gibt es eine Möglichkeit, dies mit serialisierten Daten zu erreichen? Um die Zählung zu wiederholen

    – MastaP

    3. Juli 2021 um 13:31 Uhr

Wie suche und ersetze ich alle Instanzen einer Zeichenfolge in
Enbee

Bin bei einer Google-Suche darauf gestoßen, aber vielleicht hilft es einigen weiter. Wenn Sie die Tabellen und Spalten kennen (Sie könnten dies mit der Wildcard-Suche in phpMyAdmin finden),

AKTUALISIEREN Tabellenname EINSTELLEN Spaltenname = ERSETZEN (Spaltennamehttp://oldsite.com‘,’http://newsite.com‘);

Ersetzen deutlich Teile mit Ihren eigenen.

Wenn Sie eine große Datenbank hätten, könnten Sie dies in einem Skript anwenden, das jede Tabelle und Spalte durchlaufen könnte.

  • Wille REPLACE () Arbeiten Sie auch an serialisierten Array-Daten?

    – Obmerk Kronen

    26. Januar 2018 um 3:33 Uhr


  • @ObmerkKronen Im Allgemeinen nein, aber es ist in Ordnung, wenn die Ersatzzeichenfolge dieselbe Länge hat wie die zu ersetzende.

    – mc0e

    23. März 2018 um 4:48 Uhr

1646635748 916 Wie suche und ersetze ich alle Instanzen einer Zeichenfolge in
Code-Synthese

Die MySQL-Dump-Methode wäre die beste Wahl, wenn Sie gerne die gesamte Datenbank neu importieren möchten. Für alle, die dies nicht tun möchten – die WordPress-Kerninstallation besteht tatsächlich nur aus 11 Tabellen, von denen nur wenige Inhaltsspalten sind, sodass eine Ersetzung durch Spalten genauso einfach wäre. Angenommen, Sie haben nicht viele Plugin-Tabellen, die auf Ihren Link oder Ihre Zeichenfolge verweisen, wäre dies Ihr SQL:

UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_comments SET comment_content = REPLACE(comment_content,'xcurrentx','xreplacementx');
UPDATE wp_links SET link_description = REPLACE(link_description,'xcurrentx','xreplacementx');
UPDATE wp_options SET option_value = REPLACE(option_value,'xcurrentx','xreplacementx');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_content = REPLACE(post_content,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_title = REPLACE(post_title,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt,'xcurrentx','xreplacementx');
UPDATE wp_term_taxonomy SET description = REPLACE(description,'xcurrentx','xreplacementx');
UPDATE wp_usermeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');

  • Dies ist eigentlich eine bessere Antwort. Ich weiß nicht, warum eine andere Antwort als richtig ausgewählt wird und so viele Stimmen hat

    – Parag

    3. April 2016 um 18:43 Uhr

Ihre Frage wurde 2009 gepostet und in diesem Jahr entwickelte ein anderer Typ ein einfaches PHP-Tool, um in allen Tabellen einer bestimmten Datenbank nach einer Zeichenfolge zu suchen. Optional können Sie auch alle Vorkommen durch eine andere Zeichenfolge ersetzen.

Auch nach 5 Jahren (zum Zeitpunkt des Schreibens) ist die Verwendung dieses Tools gegen eine WordPress-Installation meiner Meinung nach effektiv und viel einfacher als die Verwendung eines MySQL-Dumps (obwohl Sie vielleicht auch einen Dump erstellen möchten, bevor Sie das Skript zu Sicherungszwecken ausführen ).

Weitere Informationen finden Sie im Blog des Autors Eric Amundson und auf der Launchpad-Seite des Projekts MySQL Suchen & Ersetzen

Ich glaube nicht, dass Sie nach all der Zeit immer noch nach einer Antwort suchen, aber ich habe mich entschieden, meinen Hinweis ebenfalls zu posten, in der Hoffnung, dass er jemand anderem helfen kann, der in Zukunft hier vorbeischaut und immer noch nach einer Lösung für dieses Problem sucht.

Zusätzlich zu Brad Larsons Antwort – um Variablen festzulegen wie:

SET @what_to_be_replaced = "what_to_be_replaced", @to_be_replaced_by = "to_be_replaced_by";

Und dann verwenden Sie es wie folgt:

UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value, @what_to_be_replaced, @to_be_replaced_by );

1646635749 265 Wie suche und ersetze ich alle Instanzen einer Zeichenfolge in
Jean

Es gibt auch ein WordPress-Plugin namens Regex suchenwas das Laufen ermöglicht grep Suchen und Ersetzen in der gesamten Datenbank.

1646635749 587 Wie suche und ersetze ich alle Instanzen einer Zeichenfolge in
Ondrej

MySQL’s REPLACE oder manuelles Ersetzen der Zeichenfolge in der SQL-Datei oder db in WordPress ist kein guter Weg. WordPress verwendet serialisierte Felder, die beschädigt werden können, wenn Sie eine Zeichenfolge darin ersetzen (das war mein Fall).

ich benutzte Bessere Suche Ersetzen Plugin, das für mich perfekt funktioniert hat

  • leider ist dies ein No-Go, wenn Sie sich nicht einmal auf Ihrer Seite anmelden können, weil bereits falsche absolute URLs in der Datenbank sind.

    – Klewis

    28. November 2018 um 15:00 Uhr

963720cookie-checkWie suche und ersetze ich alle Instanzen einer Zeichenfolge in einer Datenbank?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy