Suchen und Ersetzen in Mysql Datenbank

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
dimitrj
Beiträge: 55
Registriert: 18.08.2005 12:19:21
Wohnort: Brilon

Suchen und Ersetzen in Mysql Datenbank

Beitrag von dimitrj » 19.09.2005 12:28:15

Hallo,

vielleicht etwas ot, aber: Kann man über eine Mysql Datenbank soetwas wie eine Suchen und Ersetzen Funktion laufen lassen ? Und wenn ja wie?

Beispiel: Durchsuche alle Tabellen einer Datenbank nach dem Zeichenfolgenausdruck "heute" und ersetze ihn durch "morgen"
MfG

Rüdiger

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 19.09.2005 13:34:50

Hi,

Du solltest Dich für solche Zwecke etwas näher mit SQL befassen.

Prinzipiell wäre es so möglich:

Code: Alles auswählen

mysql> update foobar set foo="morgen" where foo="heute";
Diese Anweisung ersetzt in der Spalte foo, in Tabelle foobar alle Einträge "heute" durch "morgen".

SubOptimal

Benutzeravatar
NeubiX
Beiträge: 108
Registriert: 08.12.2004 13:27:15
Wohnort: Frankfurt / Main
Kontaktdaten:

Beitrag von NeubiX » 19.09.2005 13:45:54

für alle die den mysql befehlen nicht mächtig sind.. Dump ziehen und dann im Editor suchen und ersetzen :-)

that's a real workaround *smile*

Gruß, Kai
use Linux for a better world :-)

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 19.09.2005 15:13:42

Hi Neubix,

dieser Weg wäre aber alles andere als optimal. Speziell bei großen Datenmengen nicht zu empfehlen.

SubOptimal
Zuletzt geändert von SubOptimal am 19.09.2005 17:37:07, insgesamt 1-mal geändert.

Benutzeravatar
NeubiX
Beiträge: 108
Registriert: 08.12.2004 13:27:15
Wohnort: Frankfurt / Main
Kontaktdaten:

Beitrag von NeubiX » 19.09.2005 15:16:03

@SubOptimal
da hast du Recht .. Jemand der große Datenmengen hat, kennt aber auch die mysql commands :-)


Gruß, Kai
use Linux for a better world :-)

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 19.09.2005 17:38:55

Hi Neubix,

vielleicht war es ja auch eine Hausaufgabe. Who knows? ;-)

SubOptimal

Benutzeravatar
dominator
Beiträge: 790
Registriert: 26.08.2003 10:05:37
Wohnort: Neuerdings meistens im Bierparadies Oberfranken

Beitrag von dominator » 19.09.2005 21:55:16

NeubiX hat geschrieben:...
that's a real workaround *smile*
...
real murks :wink:

Vgl MySQL-Handbuch Kapitel : "6.4 Data Manipulation"
gruss + viel erfolg

Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit

dimitrj
Beiträge: 55
Registriert: 18.08.2005 12:19:21
Wohnort: Brilon

Beitrag von dimitrj » 19.09.2005 23:18:44

Hallo,

erstmal danke an alle. Das Suchen und Ersetzen soll über alle Tabellen und Felder einer Datenbank gehen.

Bekommt man das auch hin (will das nicht für jede Tabelle einzeln machen)? Der Datenbestand ist schon ein sehr grosser.

Bitte nicht gleich erschlagen für meine Unwissenheit. :-) Habe schon SQL Kenntnisse, aber soetwas habe ich noch nie bei einer MySQL Datenbank germacht.
MfG

Rüdiger

Maj0r
Beiträge: 476
Registriert: 08.12.2003 14:52:39
Wohnort: Jüchen, Ne
Kontaktdaten:

Beitrag von Maj0r » 20.09.2005 08:49:36

Normalerweise hat fast jede Datenbank (zB Oracle) versteckte Tabellen, die alle Tabellennamen und Tabellenspalten beinhalten.
Ein select dadrüber und ein update über das Ergebnis und fertig.

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 20.09.2005 14:24:03

Hi MajOr,

ein direktes Äquivalent zu Oracles ALL_TAB_COLUMNS gibt es in MySQL nicht. Man könnte es eventuell mit mysql_tableinfo nachbilden.

SybOptimal

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 20.09.2005 15:49:03

Wie waers einfach mit

Code: Alles auswählen

show tables;
?

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 20.09.2005 16:50:14

Hi nepos,

es ging nicht in erster Linie darum eine Liste aller Tabellen zu bekommen vielmehr darum eine einfache Möglichkeit zu finden mit einem Loop alle Spalten, aller Tabellen bearbeiten zu können. Das geht in MySQL nicht so schön einfach wie in Oracle. Die genannte Tabelle enthält alle Spalten- und Tabellennamen, neben anderen Spalteninfos. Die sich dann sehr einfach mit einem SELECT zur weiteren Verarbeitung des Ergebnisses abfragen lassen. In MySQL ist der Aufwand dafür wesentlich höher.

SubOptimal

Antworten