Por lo general, uso la búsqueda manual para reemplazar el texto en una base de datos MySQL usando phpmyadmin. Estoy cansado de eso ahora, ¿cómo puedo ejecutar una consulta para buscar y reemplazar un texto con texto nuevo en toda la tabla en phpmyadmin?
Ejemplo: buscar palabra clave domain.com
, reemplazar con www.domain.com
.
mysql
phpmyadmin
alyasabrina
fuente
fuente
Respuestas:
Para una
single table
actualizaciónDe
multiple tables
-Si desea editar desde todas las tablas, la mejor manera es tomar el
dump
y luegofind/replace
subirlo nuevamente.fuente
If you want to edit from all tables, best way is to take the dump and then find/replace and upload it back.
Use sed en el basurero para buscar / reemplazar:sed "s:unwanted_text:wanted_text:g" dump.sql
La forma más fácil que he encontrado es volcar la base de datos en un archivo de texto, ejecutar un comando sed para hacer el reemplazo y volver a cargar la base de datos en MySQL.
Todos los comandos a continuación son bash en Linux.
Volcar la base de datos al archivo de texto
Ejecute el comando sed para buscar / reemplazar la cadena de destino
Vuelva a cargar la base de datos en MySQL
Pan comido.
fuente
\/\/domain.com
sed -i
comando puede arrojar ununterminated substitute pattern
error. Puedes usarsed -i '' -e 's/oldString/newString/g' ./db.sql
en su lugar.Ponga esto en un archivo php y ejecútelo y debería hacer lo que quiere que haga.
fuente
Ejecutar una consulta SQL en PHPmyadmin para buscar y reemplazar texto en todas las publicaciones de blog de WordPress, como encontrar mysite.com/wordpress y reemplazarlo con mysite.com/news La tabla en este ejemplo es tj_posts
fuente
wp_posts
para que la consulta se veaUPDATE `wp_posts` SET `post_content` = replace(post_content, 'mysite.com/wordpress', 'mysite.com/news')
Otra opción es generar las declaraciones para cada columna en la base de datos:
Esto debería generar una lista de declaraciones de actualización que luego puede ejecutar.
fuente
Por ejemplo, si quiero reemplazar todas las apariciones de John por Mark, usaré a continuación,
fuente
phpMyAdmin incluye una herramienta ordenada para buscar y reemplazar.
Seleccione la tabla, luego presione Buscar > Buscar y reemplazar
Esta consulta tomó aproximadamente un minuto y reemplazó con éxito varios miles de instancias
oldurl.ext
con lanewurl.ext
columna dentropost_content
Lo mejor de este método: puede verificar cada coincidencia antes de comprometerse.
Nota: estoy usando phpMyAdmin 4.9.0.1
fuente
¡Creo que la respuesta "swapnesh" es la mejor! Desafortunadamente no pude ejecutarlo en phpMyAdmin (4.5.0.2) que aunque ilógico (e intentó varias cosas) seguía diciendo que se encontró una nueva declaración y que no se encontró ningún delimitador ...
Por lo tanto, llegué con la siguiente solución que podría ser útil si experimenta el mismo problema y no tiene otro acceso a la base de datos que PMA ...
Para probar el resultado esperado, puede usar:
fuente
Si está seguro de que ninguno de los campos que se actualizarán están serializados, las soluciones anteriores funcionarán bien.
Sin embargo, si alguno de los campos que necesita actualización contiene datos serializados, una consulta SQL o una simple búsqueda / reemplazo en un archivo de volcado, interrumpirá la serialización (a menos que la cadena reemplazada tenga exactamente el mismo número de caracteres que la cadena buscada).
Para estar seguro, un campo "serializado" se ve así:
El número de caracteres en los datos relevantes se codifica como parte de los datos.
La serialización es una forma de convertir "objetos" en un formato fácilmente almacenado en una base de datos, o de transportar fácilmente datos de objetos entre diferentes idiomas.
Aquí hay una explicación de los diferentes métodos utilizados para serializar datos de objetos, y por qué es posible que desee hacerlo, y aquí hay una publicación centrada en WordPress: Datos serializados, ¿qué significa eso y por qué es tan importante? en lenguaje sencillo.
Sería sorprendente si MySQL tuviera alguna herramienta integrada para manejar datos serializados automáticamente, pero no es así, y dado que existen diferentes formatos de serialización, ni siquiera tendría sentido que lo haga.
wp-cli
Algunas de las respuestas anteriores parecían específicas de las bases de datos de WordPress, que serializa gran parte de sus datos. WordPress ofrece una herramienta de línea de comandos, WP buscar-reemplazar , que hace serialización mango.
Un comando básico sería:
Sin embargo, WordPress enfatiza que
guid
nunca debe cambiarse , por lo que recomienda omitir esa columna.También sugiere que muchas veces querrás saltarte la
wp_users
mesa.Así es como se vería:
wp search-replace 'https://old-domain.com' 'https://shiney-new-domain.com' --skip-columns=guid --skip-tables=wp_users --dry-run
Nota: agregué el
--dry-run
indicador para que copiar y pegar no arruine automáticamente la base de datos de nadie. Una vez que esté seguro de que el script hace lo que desea, ejecútelo nuevamente sin esa marca.Complementos
Si está utilizando WordPress, también hay muchos complementos gratuitos y comerciales disponibles que ofrecen una interfaz gui para hacer lo mismo, empaquetados con muchas características adicionales.
Interconnect / it script PHP
Interconnect / it ofrece un script php para manejar datos serializados: herramienta Safe Search and Replace . Fue creado para su uso en sitios de WordPress, pero parece que puede usarse en cualquier base de datos serializada por PHP.
Muchas empresas, incluida la propia WordPress, recomiendan esta herramienta. Instrucciones aquí, aproximadamente 3/4 abajo de la página.
fuente
lo mejor es exportarlo como archivo sql y abrirlo con un editor como código de estudio visual y buscar y volver a colocar sus palabras. Reemplazo en 1 archivo de concierto sql en 1 minutos por 16 palabras, ese total es 14600 palabras. Es la mejor manera. y después de reemplazarlo, guárdelo e impórtelo nuevamente. no olvides comprimirlo con zip para importarlo.
fuente
Generar consultas SQL de cambio (FAST)
mysql -e "SELECT CONCAT ('actualizar', nombre_tabla, 'conjunto', nombre_columna, '= reemplazar (', nombre_columna ',' 'www.oldsite.com' ',' 'www.newsite.com' '); ') COMO instrucción FROM information_schema.columns WHERE table_name LIKE' wp_% '"-u root -p your_db_name_here> upgrade_script.sql
Elimine cualquier basura al inicio del archivo. Tuve algunos.
nano upgrade_script.sql
Ejecute el script generado con las opciones --force para omitir errores. (LENTO - tome un café si es un DB grande)
mysql -u root -p your_db_name_here --force <upgrade_script.sql
fuente
En el caso de oraciones con mayúsculas y minúsculas, podemos usar REPACE BINARIO
fuente