mysql -> in table bestimmten ausdruck immer ersetzen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_gt_in_table_bestimmten_ausdruck_immer_ersetz_141416/page_1 - zur Vollversion wechseln!


taz schrieb am 26.04.2005 um 22:58

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 schrieb am 26.04.2005 um 23:02

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 schrieb am 27.04.2005 um 00:11

Das müsste ca. so gehen:

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


funka schrieb am 27.04.2005 um 00:15

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 schrieb am 27.04.2005 um 00:30

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 schrieb am 27.04.2005 um 02:28

Code:
update tabelle set feld = replace(feld, '/bla/uploads', '/bli/uploads') LIMIT 1
ja, jetzt :D


watchout schrieb am 27.04.2005 um 07:50

ich meine natürlich pro Feld :rolleyes:


taz schrieb am 27.04.2005 um 08:03

bahnhof :D

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


DJ_Cyberdance schrieb am 28.04.2005 um 18:06

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 schrieb am 28.04.2005 um 18:22

3.x ist außerdem dermaßen instabil, dass es völlig unbrauchbar ist.


DJ_Cyberdance schrieb am 28.04.2005 um 18:51

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 schrieb am 28.04.2005 um 19:10

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 schrieb am 28.04.2005 um 19:13

oder vielleicht gleich durch "" ersetzen und ab nun an nur noch relative pfade speichern


taz schrieb am 29.04.2005 um 09:29

@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 schrieb am 29.04.2005 um 17:03

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/');




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025