純粋に MySQL を使用して、「oldString」を「newString」で検索し、未定の数のテーブルと列から置き換えたいと考えています。information_schema でテーブル プレフィックスを検索すると、探す必要のあるすべてのテーブルが表示されます。
次の試行があります: information_schema で DB テーブルのプレフィックスをクエリする
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.TABLES WHERE table_name LIKE '%mysite_www%'
結果:
+-----------------+----------------------------+
| TABLE_SCHEMA | TABLE_NAME |
+-----------------+----------------------------+
| myDB | mysite_www_moredata |
| myDB | mysite_www_data |
| myDB | mysite_www_urls |
| myDB | mysite_www_pages |
| myDB | mysite_www_feedback |
| myDB | mysite_www_comments |
| myDB | mysite_www_links |
+-----------------+----------------------------+
Query results yields about 200 tables or so.
結果を取得し、特定の文字列でフィルター処理して、新しい文字列に置き換えたいと考えています。「oldString」を「newString」に置き換えます。
各 TABLE_NAME について、「%oldString%」のような任意の列 WHERE 列を検索します。
WHERE CONCAT(table1, table2, ... tableN) LIKE 'oldString';
列の結果ごとに、「oldString」を「newString」に更新します。
UPDATE tableN SET columnN = REPLACE (columnN, '%oldString%', 'newString') WHERE URL LIKE '%oldString%';
これはストア プロシージャになるため、純粋な MySQL で行う必要があります。どんな支援やヒントも大歓迎です。