Nahradiť reťazec v MySQL prostredníctvom databázy
Problém
Ako nahradíte reťazec iným vo všetkých tabuľkách v databáze?
Nahradiť vyžaduje, aby dal názov tabuľky a stĺpca, takže to nie je použiteľné.
Príklad:
Nahraďte 'string1' za 'word1' v databáze 'test' na 50 tabuľkách, ktoré tvoria jeden riadok.
Riešenie
Pred pokračovaním sa uistite, že ste si vytvorili zálohu svojej práce!
Kliknite sem a dozviete sa viac o zálohovaní a obnove databázy mysql:
//ccm.net/faq/2884-backup-restore-mysql-database
Ak používate MySQL 5.1, môžete použiť databázu information_schema, ktorá okrem iného obsahuje zoznam všetkých tabuliek v databáze ...
potom môžete napríklad použiť na vygenerovanie vašej požiadavky.
ex:
SELECT CONCAT ('UPDATE test.', TABLE_NAME, 'SET field1 = REPLACE (field1, "string1", "string1");') INFORMATION_SCHEMA.TABLES Z KDE TABLE_SCHEMA = 'test';
-> Tento dotaz vám dá výsledok, ktorý môžete vložiť do klienta:
test.table1 UPDATE SET field1 = REPLACE (field1, "string1", "string1") test.table2 UPDATE SET field1 = REPLACE (pole1, "string1", "string1");