[linux] Hoe maak je een .sql scriptje voor mysql?

Frans van Berckel fberckel op xs4all.nl
Do Dec 18 15:45:15 CET 2014


Bestaat er zoiets als lijstjes, als in een variable voor scripting? 

Ik zou graag in een x aantal mysql databases waarin ik een x aantal aantal
urls heb staan, deze vervangen voor een andere url.

De vraag is dus welke databases zijn er? Zoek en vervang deze url voor
een andere. Het gaat om één mysql server, met ongeveer 45 databases en
per database staan er om ongeveer 45 urls die vervangen moeten worden.

Waarom wil je dit? Omdat de websites een andere domeinnaam gekregen
hebben. Voorheen naam.nl, naam.be, naam.de nu naar nl.naam.domein.com,
be.naam.domein.com, de.naam.domein.com. 

Het alternatief is, dat ik (of iemand anders) in het cms, een voor een
de verwijzende url moet vervangen voor de andere.

Maar laat ik zoals je aangaf met eenvoudige voorbeelden beginnen. Ik
weet welke welke table het is 'mod_menu_link' en welk veld 'extern' ik
moet aanpassen in de database. De table ziet er namelijk als volg uit.

CREATE TABLE `mod_menu_link` (
  `section_id` int(11) NOT NULL DEFAULT '0',
  `page_id` int(11) NOT NULL DEFAULT '0',
  `target_page_id` int(11) NOT NULL DEFAULT '0',
  `redirect_type` int(11) NOT NULL DEFAULT '302',
  `anchor` varchar(255) NOT NULL DEFAULT '0',
  `extern` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`section_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Ik trof reeds een update commando voor iets dergelijks in Google aan.

# update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this
string’, ‘replace found string with this string’);

De TABLE_NAME is dus mod_menu_link en de url staat in extern.
Bovenstaande vertalen moet het volgens mij dit worden?

# update mod_menu_link set extern = replace(extern, ‘find this string’,
‘replace found string with this string’);

Nu schreef ik hierboven reeds dat ik 45 urls per site wil vervangen!

De vraag is dus, die 'find this string' mag dat ook een lijstje met urls
zijn? En hoe doe je dat precies in plean .sql?

Mijn vraag is dus, kan ik naar alle databases zoeken en de gevonden
databases met deze table in een $variable stoppen? En kan ik vervolgens
alle urls en vervangende urls ook in een $variable stoppen?

En is deze reeks in een .sql script te verwerken om in phpmyadmin te
kunnen starten om bovenstaande te realiseren?

Ik begon vanmorgen vrij positief. De vraag werd naarmate mij analyse
echter steeds iets ingewikkelde, voor een eerste mysql leer projectje.  

Dus wie wel me hierbij helpen?

Met vriendelijke groet,


Frans van Berckel




More information about the Linux mailing list