suchen und Ersetzen von Strings in MySQL-Datensätzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • suchen und Ersetzen von Strings in MySQL-Datensätzen

    Bin nicht so fit mit MySQL - habe eine Frage, die wohl leicht beantwortet werden kann:

    In meiner MySQL-Datenbank (Shared Hosting Provider, ca. 15MB gross) möchte ich eine Zeichenkette "xyz", die in diversen Datensätzen enthalten ist, durch eine andere Zeichenkette "abc" austauschen. Und zwar nicht händisch, sondern automatisiert. Suche also sozusagen ein "Suchen-und-Ersetzen-Tool" für Zeichenketten in meiner Datenbank.

    Wer kann mir einen Tipp geben?

    Danke!
    Klaus

  • #2
    http://dev.mysql.com/doc/mysql/en/String_functions.html -> replace ist dein Freund (in Verbindung mit update)

    Kommentar


    • #3
      Danke, suche aber eigentlich eher ein kleines fertiges Tool in PHP oder so, wo ich das ganze etwas bedienerfreundlicher (Formular für den zu suchenden und zu ersetzenden Text) hinbekomme.

      Kennt da jemand was?

      Kommentar


      • #4
        ich nicht ... dafür aber verschieben ins richtige Forum kann ich

        Kommentar


        • #5
          Hallo,

          ich bin auch auf der Suche nach solch einem Tool.
          Hast Du schon etwas gefunden?

          Grüße
          Dode

          Kommentar


          • #6
            Problem gelöst, habe zwar kein Tool gefunden aber das "Problem zu Fuss" gelöst:

            mysql> select * from foo;
            +----+---------------------------------------+
            | id | text |
            +----+---------------------------------------+
            | 1 | aaaaaaaaaaaaaaaabbbbbbbbbASDF |
            | 2 | ASDFaaaaaaaaaaaaaaaabbbbbbbbbASDF |
            | 3 | ASDFaaaaaaaaaaaaaaAsDFaabbbbbbbbbASDF |
            | 4 | ASDFaaaaaaaaaaaaaaASDFaabbbbbbbbbASDF |
            +----+---------------------------------------+
            4 rows in set (0.05 sec)

            mysql> update foo set text=replace(text,'ASDF','XYZ!');
            Query OK, 4 rows affected (0.08 sec)
            Rows matched: 4 Changed: 4 Warnings: 0

            mysql> select * from foo;
            +----+---------------------------------------+
            | id | text |
            +----+---------------------------------------+
            | 1 | aaaaaaaaaaaaaaaabbbbbbbbbXYZ! |
            | 2 | XYZ!aaaaaaaaaaaaaaaabbbbbbbbbXYZ! |
            | 3 | XYZ!aaaaaaaaaaaaaaAsDFaabbbbbbbbbXYZ! |
            | 4 | XYZ!aaaaaaaaaaaaaaXYZ!aabbbbbbbbbXYZ! |
            +----+---------------------------------------+
            4 rows in set (0.00 sec)


            So funktioniert's! Danke an asp2php!

            Kommentar


            • #7
              Ist echt die Frage warum manche Leute auf die Idee kommen man müsse ein Tool entwickeln, wenn man für die Erledigung einer Aufgabe gerade mal 1 SQL-Statement benötigt ... gerade in anbetracht der Tatsache das es seit jahren so universelle und bequeme Tools wie mysql (Kommandozeile) bzw. phpMyAdmin (Webinterface) gibt .. ... mancher braucht halt für jeden Scheiss entweder ein "Script" oder 'ne "Klasse" ...
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                Original geschrieben von goth
                mancher braucht halt für jeden Scheiss entweder ein "Script" oder 'ne "Klasse" ...
                OffTopic:
                weil es wahrscheinlich imposanter kling

                Kommentar


                • #9
                  Dem kann ich nicht ganz zustimmen.

                  Ich habe auch derzeit das Problem, dass Redakteure(keine Programmierer) den Inhalt einer Datenbank verwalten müssen. Und zwar über eine HTML-Oberfläche im Intranet. Es ist einfach die Datensätze anzulegen und auch Datensätze zu löschen. Es war seinerzeit(nicht von mir ) nie daran gedacht worden, dass diese Datenbank mal mehr als 3000 Einträge hat und die Verwaltung in einer Liste doch etwas umständlich ist.

                  Es gibt nur eine Listenansicht in der alle Einträge untereinander angezeigt werden. 3000 Zeilen, cool nicht....
                  Es muss nun in beispielsweise in 325 Datensätzen ein String getauscht werden. Weiterhin sollten Datensätze die einen bestimmnten Namen enthalten entfernt werden. usw. usw. Datenpflege eben.

                  Keiner der Redakteure kann SQL und somit über PHPMyAdmin direkt Daten ändern. Es geht auch nicht nur um ein paar einmalige Änderungen, denn die könnte ich als Admin dann kurz mit SQL erledigen.

                  Es geht darum "normalen Usern" ein einfaches Interface anzubieten, mit dem einzelne oder mehrere Datenfelder geändert werden können. Wer schon mal solche Interfaces entwickelt hat weiss wie aufwendig vor allem der Test ist...

                  Bevor ich nun selbst ein GUI mit PHP baue, mit dem einfache SQL-Funktionen in einem HTML-Interface ausgeführt werden können, suche ich schon, ob es so was schon gibt. PHPMyAdmin hilft da meines Wissens - ohne SQL-Kenntnisse - nicht weiter. Auch eine Kommandozeile steht den Redakteuren nicht zur Verfügung...

                  Hat mir jemand einen Vorschlag, oder muss ich mich doch selbst ransetzen?

                  Sorry wenn ich mich hier einmische, aber ich denke das passt doch recht gut.

                  untangler

                  Kommentar


                  • #10
                    Original geschrieben von kongking
                    Problem gelöst, habe zwar kein Tool gefunden aber das "Problem zu Fuss" gelöst:

                    mysql> select * from foo;
                    +----+---------------------------------------+
                    | id | text |
                    +----+---------------------------------------+
                    | 1 | aaaaaaaaaaaaaaaabbbbbbbbbASDF |
                    | 2 | ASDFaaaaaaaaaaaaaaaabbbbbbbbbASDF |
                    | 3 | ASDFaaaaaaaaaaaaaaAsDFaabbbbbbbbbASDF |
                    | 4 | ASDFaaaaaaaaaaaaaaASDFaabbbbbbbbbASDF |
                    +----+---------------------------------------+
                    4 rows in set (0.05 sec)

                    mysql> update foo set text=replace(text,'ASDF','XYZ!');
                    Query OK, 4 rows affected (0.08 sec)
                    Rows matched: 4 Changed: 4 Warnings: 0

                    mysql> select * from foo;
                    +----+---------------------------------------+
                    | id | text |
                    +----+---------------------------------------+
                    | 1 | aaaaaaaaaaaaaaaabbbbbbbbbXYZ! |
                    | 2 | XYZ!aaaaaaaaaaaaaaaabbbbbbbbbXYZ! |
                    | 3 | XYZ!aaaaaaaaaaaaaaAsDFaabbbbbbbbbXYZ! |
                    | 4 | XYZ!aaaaaaaaaaaaaaXYZ!aabbbbbbbbbXYZ! |
                    +----+---------------------------------------+
                    4 rows in set (0.00 sec)


                    So funktioniert's! Danke an asp2php!
                    so ein problem habe ich auch, aber den lösung habe ich leider nicht ganz so kapiert.

                    also wass soll ich jetzt schreiben, datenbanknahme =acemiler
                    tabellennahme=bb1_users = fieldnahme = message

                    es sind so ungefähr über 260.000 einträge,

                    also das problem ist folgendes, habe meinen Forum auf einen anderen Forum script convertiert, später habe ich festgestellt das manche zeichen sogar ganze wörter (BBCODE) falsch dargestellt wird.Nun wollte ich das entweder als Php script oder manuell wie obige beispiel ändern.

                    also muß ich jetzt PhpMyadmin öffnen auf dem Datenbank gehen und auf sql abfrage das hier schreiben ??

                    update message set text=replace(text,'[code=i]','[code]');

                    ???

                    Zuletzt geändert von Tango; 01.08.2005, 02:29.

                    Kommentar

                    Lädt...
                    X