jueves, 8 de septiembre de 2011

Copiar un conjunto de tablas dentro de la misma base de datos

Hoy quería hacer una copia de un blog de wordpress de manera que pudiera tener un sitio de pruebas en el que jugar sin miedo a cargarme algo del blog de verdad.
Uno de los pasos que hay que realizar es una copia de la base de datos utlizada por el blog. En mi caso no tengo más bases de datos así que la opción ha sido copiar las tablas con un nombre diferente a la misma base de datos.
Para mi sorpresa, buscando por internet, no he encontrado una manera rápida o semi-automática de realizar esta copia. He encontrado muchos posts de como copiar una tabla (pero solo una, no un conjunto de ellas) pero no me apetecía ejecutar una por una para cada tabla.
Comentar que uso MySQL por si alguien lo dudaba.

La solución para copiar las tablas a la misma base de datos pero con nombre distinto ha sido:
  1. Acceder al gestor de la base de datos a traves de phpMyAdmin
  2. Seleccionar todas las tablas que quería copiar, marcándolas con el correspondiente "checkbox"
  3. Abajo de todo el listado de tablas, hay un desplegable para realizar acciones en bloque, ahí he elegido Exportar
  4. Descargamos el archivo de exportación a nuestro ordenador y lo abrimos con un editor de texto. Buscamos el prefijo que tengan dichas tablas y lo sustituimos por un nuevo prefijo.
    Por ejemplo, si se llamaban todas wordpress_nombreDeTabla, buscamos wordpress_ y lo sustituimos por otroprefijo_
  5. En caso de que no haya un prefijo común a todas las tablas, siempre tendremos un patrón en todas ellas, por ejemplo "CREATE TABLE IF NOT EXIST nombreDeTabla". En este caso buscamos la cadena "CREATE TABLE IF NOT EXIST " (con el espacio del final incluido) y lo reemplazamos por "CREATE TABLE IF NOT EXIST otroprefijo_" de manera que todas las tablas pasarán a tener otroprefijo_ delante suyo.
  6. Guardamos el fichero
  7. Volvemos a phpMyAdmin y en el menú superior elegimos "Importar"
  8. Elegimos el archivo editado, y lo importamos. Todas las tablas deberán duplicarse con su nuevo nombre.
Espero que haya sido de utilidad y puedas copiar tus tablas de mySQL sin tener que ir una por una