Einträgein DB suchen/ersetzen...??

Einträgein DB suchen/ersetzen...??

am 21.02.2006 18:40:57 von Michael Hagedorn

Hi.
Folgendes Problem: Seit einem Serverumzug haben sich in einem CMS viele
Links verändert (neue Adresse).
Wie kann ich in meiner mysql-DB alle Einträge suchen/ersetzen kann, die auf
die alten URLs zeigen?
Danke,
--
Michael

Re: Einträge in DB suchen/ersetzen...??

am 21.02.2006 18:58:04 von Johannes Vogel

Hi Michael

Michael Hagedorn wrote:
> Folgendes Problem: Seit einem Serverumzug haben sich in einem CMS viele
> Links verändert (neue Adresse).
> Wie kann ich in meiner mysql-DB alle Einträge suchen/ersetzen kann, die auf
> die alten URLs zeigen?

Du kannst

a) REPLACE anwenden:
update Tabelle set row=replace(row,'oldlink','newlink');

b) mysqldump verwenden, in beliebigem Tool (bspw. per sed) die beiden
Links austauschen und die DB wieder zurückspielen.

a) bietet sich an, wenn nur wenige Attribute geändert werden müssen. b)
ergibt u.U. Probleme mit Zeichensätze und ist heikel bzgl. Ausfall.

HTH, Johannes

Re: Einträgein DB suchen/ersetzen...??

am 21.02.2006 19:18:51 von Michael Hagedorn

> a) REPLACE anwenden:
> update Tabelle set row=replace(row,'oldlink','newlink');

Zwei Probleme dabei:
1.) Kann man auch update * machen, wenn man sich nicht per Hand durch alle
Tabellen hangeln will?
2.) Es hat sich nur der erste Teil des Links geändert -- also aus
www.altername.de/rest-des-links.html wurde
www.neuername.org/rest-des-links.html (der Rest ist also gleich
geblieben)
Geht das dennoch mit deiner Methode?

Michael

Re: Einträge in DB suchen/ersetzen...??

am 21.02.2006 19:42:36 von Dominik Echterbruch

Michael Hagedorn wrote:
>>a) REPLACE anwenden:
>>update Tabelle set row=replace(row,'oldlink','newlink');
>
> Zwei Probleme dabei:
> 1.) Kann man auch update * machen, wenn man sich nicht per Hand durch alle
> Tabellen hangeln will?

Was sagt denn die Doku [1] dazu? Ich würde mal auf "Nein" tippen.

> 2.) Es hat sich nur der erste Teil des Links geändert -- also aus
> www.altername.de/rest-des-links.html wurde
> www.neuername.org/rest-des-links.html (der Rest ist also gleich
> geblieben)
> Geht das dennoch mit deiner Methode?

Was spricht gegen ausprobieren? Ich würde mal auf "Ja" tippen.

[1] http://dev.mysql.com/doc/refman/5.0/en/update.html


Grüße,
Dominik
--
MonstersGame - Die Schlacht zwischen Vampiren und Werwölfen
http://spielwelt6.monstersgame.net/?ac=vid&vid=3018786

Re: Einträgein DB suchen/ersetzen...??

am 21.02.2006 19:50:45 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Einträge in DB suchen/ersetzen...??

am 21.02.2006 21:40:30 von Erich Klecka

Zur Flaschenpost von
Michael Hagedorn ............
>Hi.
>Folgendes Problem: Seit einem Serverumzug haben sich in einem CMS viele
>Links verändert (neue Adresse).
>Wie kann ich in meiner mysql-DB alle Einträge suchen/ersetzen kann, die auf
>die alten URLs zeigen?
>Danke,

Vielleicht ein anderer Denk-Ansatz:

Wenn das ein Apache-Server ist, ist das Umwandeln der Links mit
Rewrites in der .htaccess ein einfacherer Weg.


ciao
erich

--
www.sailnet.at

Re: Einträge in DB suchen/ersetzen...??

am 21.02.2006 23:05:43 von Johannes Vogel

Hi Erich

Erich Klecka wrote:
> Zur Flaschenpost von
> Michael Hagedorn ............
^-- Bitte auf eine Zeile reduzieren.

>>Folgendes Problem: Seit einem Serverumzug haben sich in einem CMS viele
>>Links verändert (neue Adresse).
>>Wie kann ich in meiner mysql-DB alle Einträge suchen/ersetzen kann, die auf
>>die alten URLs zeigen?
> Vielleicht ein anderer Denk-Ansatz:
> Wenn das ein Apache-Server ist, ist das Umwandeln der Links mit
> Rewrites in der .htaccess ein einfacherer Weg.

Andere Denkansätze sind immer willkommen. Hier möchte ich aber trotzdem
Bedenken äussern.

a) Benötigen Rewrites einiges mehr Ressourcen.
b) Sollte doch das Original so korrigiert werden, dass es stimmt.

Um kompatibel zu bleiben, macht es sicherlich Sinn, die alten Links via
Rewrite-Rules weiterhin zur Verfügung zu stellen.

Aber wie in einem späteren Posting des OP zu finden, wechselt die
Domain, nicht etwa der Pfad. Hier kann also einfach ein ServerAlias in
die VirtualHost-Config gesetzt werden. (Falls Apache und die alte Domain
noch immer beibehalten wird). Die DB sollte aber in sich trotzdem
konsistent sein und möglichst die korrekten Daten enthalten.

HTH, Johannes