Mysqlデータベースのすべてのテーブルでテキストを検索して置き換えるためにクエリを実行する必要があります。
このクエリは見つかりましたが、tbl_nameテーブルとcolumnフィールドのテキストのみを検索します。
update tbl_name set column=REPLACE(column, 'fuschia', 'Fuchsia');
すべてのテーブルとすべてのフィールドを検索する必要があります:(データベースのすべての場所)
スクリプトを生成するには、information_schema
データベースを使用する必要があります。
次の基準を持つすべてのデータベースのすべてのテーブルからすべての列を収集します。
information_schema
performance_schema
mysql
COLUMN_TYPE
値。次のいずれかの特性があります:CHAR(
で始まるVARCHAR(
で始まるTEXT
で終わる(TEXT
、MEDIUMTEXT
、LONGTEXT
)これらの列を取得するクエリは次のとおりです
SELECT table_schema,table_name,column_name FROM information_schema.columns
WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')
AND (column_type LIKE 'char(%' OR column_type LIKE 'varchar(%' OR column_type LIKE '%text');
上記のクエリを使用して、fuschia
をFuchsia
に変換するSQLを出力するクエリのセットを作成します。
SELECT CONCAT('UPDATE ',table_schema,'.',table_name,
' SET ',column_name,'=REPLACE(',column_name,',''fuschia'',''Fuchsia'');')
FROM information_schema.columns
WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')
AND (column_type LIKE 'char(%'
OR column_type LIKE 'varchar(%'
OR column_type LIKE '%text');
そのクエリを受け取り、その出力をテキストファイルに送信します。 mysqlにテキストをインポートします。
SQL="SELECT CONCAT('UPDATE ',table_schema,'.',table_name,"
SQL="${SQL}' SET \`',column_name,'\`=REPLACE(\`',column_name,'\`,''fuschia'',''Fuchsia'');') "
SQL="${SQL} FROM information_schema.columns WHERE "
SQL="${SQL} table_schema NOT IN ('information_schema','mysql','performance_schema') "
SQL="${SQL} AND (column_type LIKE 'char(%' "
SQL="${SQL} OR column_type LIKE 'varchar(%'"
SQL="${SQL} OR column_type LIKE '%text');"
mysql -u... -p... -ANe"${SQL}" > GlobalReplace_fuschia_to_Fuchsia.sql
less GlobalReplace_fuschia_to_Fuchsia.sql
ファイルに問題がなければ、自由に実行してください。
試してみる !!!