"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

mysql -> in table bestimmten ausdruck immer ersetzen

taz 26.04.2005 - 22:58 914 14
Posts

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
hi !

gleich vorweg ich kenne micht mit sql nicht/kaum aus und brauche es normalerweise auch nicht. bei der übersiedlung meines weblogs bin ich aber auf ein problem gestossen, dass wohl kleine sql kenntnisse benötigt. bei bildern, die ich auf der seite eingebunden habe, haben sich durch den serverwechsel die pfade geändert. statt /bla/uploads/pic1.jpg ist es nun /bli/uploads/pic1.jpg. Ich will nun diesen pfad nicht für jeden eintrag händisch ändern. gibt es eine möglichkeit table-weit einen ausdruck durch einen anderen zu ersetzen ?

es gibt auch ein interface für die DB, aber wie gesagt, ich blicke da nicht durch und für das eine mal will ich mir das nicht anschauen.

dafür bin ich für jede hilfe furchtbar dankbar :)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
jo, also ohne Regexp wirst da alt ausschaun, und ich wüsste nicht dass das [edit]direkt in mysql[/edit] ginge... kannst nicht einfach nen symlink setzen? sollte weniger probleme machen ;)

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Das müsste ca. so gehen:

Code:
update tabelle set feld = replace(feld, '/bla/uploads', '/bli/uploads')

funka

Legend
ex-prophet(down below)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
um die uhrzeit ist mir das genau zu durchdenken etwas zu nervig ;)

vielleicht gehts ueber die standard stringfunktionen innerhalb eines updates - keine ahnung wie weit man hier ohne subselects innerhalb von mysql kommt
aber maybe geht etwas in der art
update table set filename=INSERT(filename,1,3,bli)
hab mich um ehrlich zu sein schon laenger nicht mehr mit mysql beschaeftigt

grundsaetzlich wuerde ich keine absoluten pfade in einer db speichern

sofern oberes geht hilft dir auch SUBSTRING_INDEX und CONCAT weiter

edit: der schon wieder ;)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von that
Das müsste ca. so gehen:

Code:
update tabelle set feld = replace(feld, '/bla/uploads', '/bli/uploads')
replaced der nicht nur ein vorkommen? bilde mir sowas in der art ein ;)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
Code:
update tabelle set feld = replace(feld, '/bla/uploads', '/bli/uploads') LIMIT 1
ja, jetzt :D

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
ich meine natürlich pro Feld :rolleyes:

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
bahnhof :D

vorhanden ist my1Admin und wenns viel arbeit ist werd ichs wohl anders machen :)

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Als einfaches Tool kann ich euch MySQL-Front ans Herz legen. Damit lassen sich SQL-Datenbanken gut manipulieren. Allerdings ist die momentan verfügbare Version 3.x kostenpflichtig bzw. es gibt eine Testversion. Ich hab Version 2.5, die war noch Freeware.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
3.x ist außerdem dermaßen instabil, dass es völlig unbrauchbar ist.

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Zitat von Ringding
3.x ist außerdem dermaßen instabil, dass es völlig unbrauchbar ist.
Glaub ich gern, ich glaub da entwickelt jetzt ein anderes Team weiter... der ursprüngliche Autor hat schon lang nix mehr gemacht und das Projekt glaub ich abgegeben. Macht nix, never touch a running system, bin mit Version 2.5 zufrieden. Falls man übrigens mal die richtige Syntax eines SQL-Queries nicht kennt, kann man die entsprechende Operation durchführen und den Querystring dazu bewundern. War schon desöfteren hilfreich.

Medice

Intensivlaie
Avatar
Registered: Mar 2003
Location: irc.euirc.net - ..
Posts: 1967
also ich würd da nen ganz schäbigen workaround machen (hoff das mich keiner dafür killen will *g*)

---> export die db als file - saug dir das lokal zu dir (phpmyadmin macht meines wissens beides in einem möglich)
bei dir das ganze in nem brauchbaren Texteditor öffnen (Ultraedit z.B.)
replace all nach den gewünschten Kriterien --> abspeichern

db mit dem "neuen" file ersetzen, bzw alte db löschen und mit die "neue" einbauen...
hth

funka

Legend
ex-prophet(down below)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
oder vielleicht gleich durch "" ersetzen und ab nun an nur noch relative pfade speichern

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
@medice: so hab ich es nun gemacht :)

@funka: es sind normalerweise eh relative pfade war ein missgeschick meinerseits, dass es in dem fall absolute waren

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Zitat von taz
@medice: so hab ich es nun gemacht :)

Öhm... Naja gut, es ist eine Möglichkeit. Aber mysql unterstützt Stringoperationen per se, in Deinem Fall etwa

UPDATE database set column = REPLACE(column, '/bli/', '/bla/');
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz