Encuentra y reemplaza en toda la base de datos mysql

Me gustaría hacer un hallazgo y reemplazar dentro de una base de datos completa no solo una tabla.

¿Cómo puedo alterar el script a continuación para trabajar?

update [table_name] set [field_name] = replace ([field_name], ‘[string_to_find]’, ‘[string_to_replace]’);

¿Solo uso un asterix?

update * set [field_name] = replace ([field_name], ‘[string_to_find]’, ‘[string_to_replace]’);

sqldump a un archivo de texto, buscar / reemplazar, volver a importar el sqldump.

Volcar la base de datos a un archivo de texto
mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Restaure la base de datos después de haber realizado cambios en ella.
mysql -u root -p[root_password] [database_name] < dumpfilename.sql

Actualice la URL anterior a la nueva URL en Word-press mysql Query:

 UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com'); UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com'); UPDATE wp_posts SET post_excerpt = replace(post_excerpt, 'http://olddomain.com', 'http://newdomain.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com'); 

Esto implica fuertemente que sus datos NO ESTÁN NORMALIZADOS para comenzar. Realmente deberías arreglar eso.

Somteh = algo así debería funcionar (Nota: no has mencionado el uso de otros idiomas, por lo que está escrito como un procedimiento almacenado de MySQL)

  create procedure replace_all(find varchar(255), replce varchar(255), indb varcv=char(255)) DECLARE loopdone INTEGER DEFAULT 0; DECLARE currtable varchar(100); DECLARE alltables CURSOR FOR SELECT t.tablename, c.column_name FROM information_schema.tables t, information_schema.columns c WHERE t.table_schema=indb AND c.table_schema=indb AND t.table_name=c.table_name; DECLARE CONTINUE HANDLER FOR NOT FOUND SET loopdone = 1; OPEN alltables; tableloop: LOOP FETCH alltables INTO currtable, currcol; IF (loopdone>0) THEN LEAVE LOOP; END IF; SET stmt=CONCAT('UPDATE ', indb, '.', currtable, ' SET ', currcol, ' = word_sub(\'', find, '\','\'', replce, '\') WHERE ', currcol, ' LIKE \'%', find, '%\''); PREPARE s1 FROM stmt; EXECUTE s1; DEALLOCATE PREPARE s1; END LOOP; END // 

Dejaré que te explique cómo declarar la función word_sub: he hecho suficiente progtwigción gratuita aquí.

Respuesta corta: no puedes.

Respuesta larga: puede utilizar INFORMATION_SCHEMA para obtener las definiciones de la tabla y usar esto para generar las sentencias UPDATE necesarias dinámicamente. Por ejemplo, podrías comenzar con esto:

 SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_schema' 

Intentaré evitar hacer esto aunque sea posible.

Esto no es posible; necesita realizar una ACTUALIZACIÓN para cada tabla individualmente.

ADVERTENCIA: LA SOLUCIÓN DOBLE, PERO FUNCIONARÁ (PROBABLEMENTE) SIGUE

Alternativamente, puede volcar la base de datos a través de mysqldump y simplemente realizar la búsqueda / reemplazo en el archivo SQL resultante. (Recomendaría dejar todo lo que pueda tocar la base de datos mientras está en progreso, así como usar los parámetros –add-drop-table y –extended-insert.) Sin embargo, necesitaría estar seguro de que el buscar / reemplazar texto no iba a alterar nada más que los datos en sí (es decir, que el texto que se iba a intercambiar podría no ocurrir como parte de la syntax SQL) y realmente intentaría hacer la reinserción en una base de datos de prueba vacía primero ).

Simple Soltion

 UPDATE `table_name` SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text') 

Herramienta de búsqueda y reemplazo de MySQL

Herramienta muy útil basada en web escrita en PHP que facilita la búsqueda y reemplazo de cadenas de texto en una base de datos MySQL.

¡TEN CUIDADO, cuando reemplaces con el comando REPLACE!

¿por qué?

porque existe una gran posibilidad de que su base de datos contenga datos serializados (especialmente wp_options table), por lo que el uso de “reemplazar” podría romper los datos.

Use la serialización recomendada: https://www.protectpages.com/tools/WordpressMigrator

Si está en phpMyAdmin y solo tiene un cambio mínimo, puede hacerlo de una manera fácil.

  • Inicie sesión en su phpMyAdmin
  • Seleccione la base de datos que necesita para realizar los cambios
  • Haga clic en la opción de búsqueda

    enter image description here

Siempre puede seleccionar cualquiera de las tablas o cualquiera. Recuerde dar la palabra clave de búsqueda, se usará como comodín (%).

  • Ahora haga clic en Ir.
  • Esto le dará todas las tablas que tienen el artículo que ha buscado.

enter image description here

  • Ahora puede abrir cada tabla una por una y realizar la actualización. Una consulta de muestra generada puede tener el siguiente aspecto.

    SELECCIONAR * FROM sibeecst_passion . wp_ewwwio_images DONDE (CONVERTIR ( id UTILIZANDO utf8) ME GUSTA ‘% sibee%’ O CONVERTIR ( path UTILIZANDO utf8) ME GUSTA ‘% sibee%’ O CONVERTIR ( image_md5 UTILIZANDO utf8) ME GUSTA ‘% sibee%’ O CONVERTIR ( results UTILIZANDO utf8) LIKE ‘ % sibee% ‘O CONVERTIR ( gallery UTILIZANDO utf8) LIKE’% sibee% ‘O CONVERTIR ( image_size UTILIZANDO utf8) LIKE’% sibee% ‘O CONVERTIR ( orig_size UTILIZANDO utf8) LIKE’% sibee% ‘O CONVERTIR ( updates UTILIZANDO utf8) LIKE ‘% sibee%’ O CONVERTIR ( updated UTILIZANDO utf8) COMO ‘% sibee%’ O CONVERTIR ( trace UTILIZANDO utf8) LIKE ‘% sibee%’ O CONVERTIR ( attachment_id UTILIZANDO utf8) LIKE ‘% sibee%’ O CONVERTIR ( resize USING utf8) ME GUSTA ‘% sibee%’ O CONVERTIR ( converted USANDO utf8) COMO ‘% sibee%’ O CONVERTIR ( level USANDO utf8) COMO ‘% sibee%’ O CONVERTIR ( pending USAR utf8) COMO ‘% sibee%’ O CONVERTIR ( backup UTILIZANDO utf8) LIKE ‘% sibee%’

Otra opción (según el caso de uso) sería utilizar los productos TextPipe y DataPipe de DataMystic . Los he usado en el pasado, y han funcionado muy bien en los complejos escenarios de reemplazo, y sin tener que exportar datos de la base de datos para buscar y reemplazar.

Solo quería compartir cómo encontré esta función de búsqueda / reemplazo con la base de datos sql, porque necesitaba reemplazar los enlaces del archivo de sesión de DB de Chrome.

  • Así que exporté el archivo de base de datos sql como archivo .txt usando SQLite Database Browser 2.0 b1
  • Buscar / reemplazar en bloc de notas ++
  • Se importó el archivo .txt en el navegador de la base de datos SQLite 2.0 b1