Base de datos

Hay muchos plugins que te permiten exportar todo el contenido de tu base de datos WordPress (con todos tus posts, páginas, comentarios, usuarios, …) generando un script SQL (con todos los CREATE TABLE, INSERTs,… necesarios para regenerarla) pero muchos menos los que te permitan restaurar esos datos a partir de ese mismo archivo SQL.

El motivo es claro, es mucho más fácil ofrecer la funcionalidad de backup (inocua para tu web) que la de importar (un claro riesgo para tu instalación, ya que depende de qué tablas se sobreescriban, esto puede dejar tu WordPress inutilizado). Hasta BackWPup, uno de los plugins de backup más conocidos, decidió eliminar esta funcionalidad en una de sus últimas actualizaciones.

¿Cómo solucionamos el problema? Vamos a ver dos opciones para ejecutar nosotros el script SQL directamente y así poder recuperar nuestros datos después de cualquier problema con nuestra web o con motivo de una migración:

  • (recomendado) Desde fuera de WordPress, usando un cliente de bases de datos como  phpMyAdmin
  • Desde dentro de WordPress, abriendo una consola de tu base de datos con un plugin

Veamos las dos opciones.

Desde fuera: PHPMyAdmin

PHPMyAdmin es una herramienta gratuita para la gestión de bases de datos MySQL (la única base de datos que WordPress soporta oficialmente). PHPMyAdmin está disponible en el panel de control ofrecido por tu proveedor de hosting. Una vez dentro, sólo hay que seleccionar la base de datos utilizada por la instalación WordPress (si ves varias y no sabes cuál es la «buena» busca en el archivo wp-config.php una línea como define(‘DB_NAME’, ‘this is the name of your database’);.

Una vez con la base de datos seleccionada, ve a la pestaña de Import y carga el fichero SQL a importar (de nuevo, edita primero el fichero para evitar sobreescribir todas las tablas, dependiendo de lo que estés intentando hacer).

importar en WordPress con MySQL

Si el archivo es muy grande y phpmyadmin da un error de timeout, aquí encontrarás algunas sugerencias.

Desde dentro: Adminer plug-in

Si no tienes acceso al panel de control (o no sabes como utilizarlo) puedes instalar un plugin de WordPress que ofrezca la misma funcionalidad que phpMyAdmin sin salir del escritorio de WordPress. Mi recomendación es sin duda el plugin Adminer (versión WordPress de la herramienta Adminer, que se define como un competidor de phpMyAdmin con, según ellos, mejor interfaz de usuario, soporte para MySQL, eficiencia y seguridad).

Una vez instalado, aparecerá una nueva opción Adminer debajo del menú de herramientas. Podrás ejecutar Adminer en el mismo escritorio o abrir una ventana independiente.

adminer php mysql tool

Como con phpMyAdmin, la lista de tablas aparece en la izquierda y en la derecha los datos o estructura de la tabla seleccionada.

adminer3

Finalmente, arriba a la izquierda verás las dos opciones más importantes: el botón de DUMP (para exportar los datos) y la opción que nos interesa hoy, el botón de SQL command que nos permitirá ejecutar una sentencia SQL individual o importar un script a partir de un archivo.

import sql adminer

Como siempre aconsejamos, antes de sobreescribir los datos de tu base de datos WordPress, haz siempre una copia de seguridad. En este caso la puedes hacer directamente exportando un SQL con las herramientas que aquí te hemos enseñado. Y si tienes dudas, pregúntanos.

Imagen destacada de Christophe BENOIT.

31 respuestas a «Cómo importar el contenido de tu WordPress a partir de un archivo SQL»

  1. Avatar de David

    Hola Jordi, existe alguna manera de importar información de una tabla a otra? por ejemplo del formulario de contacto gravity forms debo hacer que esos datos también se dupliquen y se publiquen como post para crear un blog con las entradas del formulario, ¿Alguna idea? de antemano gracias

    1. Avatar de Jordi Cabot

      Hola David,

      Primero perdón por el retraso en contestar pero rescaté tu comentario de la carpeta de Spam 🙁

      La respuesta a tu pregunta es que NO hay ninguna manera fácil de hacer lo que propones más que nada porqué la estructura de las dos tablas es diferente con lo que más que un import directo lo que tendrías que hacer es mapear las columnas de las dos tablas según lo que te interese.

      Este «mapeo» lo puedes implementar o bien a nivel del código de gravity forms (de forma que cuando se vaya a hacer el insert en su tabla se haga también otro insert en la tabla de posts) o a nivel de base de datos utilizando un trigger del tipo AFTER INSERT (con la misma semántica, asegurarse que cada vez que se hace un insert en una tabla se haga también en la otra).

      ¿Has mirado si no hay ya alguna extensión a gravity forms que te permita hacer esto automáticamente? Parece una necesidad que más de uno debería tener.

  2. Avatar de Mrfoxtalbot

    Muy buena pinta lo del Adminer, no lo conocía. Especialmente cuando toca lidiar con hostings «farragosos», para hacer buscar/reemplazar rápidos y para optimizaciones puntuales de BBDD (borrar revisiones por ejemplo).

  3. Avatar de Mrfoxtalbot

    Aquí va un plugin que he encontrado hoy por casualidad. No hace nada que no haga ya adminer, pero sí es mucho más cómodo cuando simplemente quieres exportar la BD para hacer una migración porque antes de descargarla te hace un Buscar/Reemplazar en wp_options y en wp_posts 🙂 http://wordpress.org/plugins/wp-migrate-db/screenshots/

  4. Avatar de Ignacio Antuña
    Ignacio Antuña

    hola muy bueno el post, sabes que necesito importar como «entrada wordpress» es decir que quede como un post, cierta parte de una base de datos de videos embebidos que tengo…como podria hacerlo’? gracias

    1. Avatar de Jordi Cabot

      En tu caso lo que deberías hacer es escribir algún tipo de script que vaya rellenando la tabla wp_posts a partir de los datos de tu base de datos. Es esa tabla la que guarda la información de las entradas que después ves en WordPress.

  5. Avatar de Álvaro Bueno

    Entonces, ¿tanto en localhost como desde un hosting puedo con Adminer importar mi base de datos sql de mi blog wordpress?

    ¿Y el resto de contenidos, de mi web, fotos, plugins, etcétera dónde se colocan y como?, ¿copiar pegar o por ftp según el caso?

    1. Avatar de Jordi Cabot

      Hola Álvaro. Correcto, Adminer funciona perfectamente en un entorno local. El resto como dices via FTP es lo más rápido

  6. Avatar de Eloi

    Buenas, he importado todos los posts de mi wordpress.com a mi hosting y cuando accedo a la nueva pagina donde dederian estar ya los posts no puedo acceder a ellos, los veo en la pagina de inicio pero cuando quiero acceder a ellos me pone que la pagina no existe. Al igual tambien cuando hago un nuevo post y lo cuelgo tambien me pasa lo mismo.

    Gracias de antemano, y enhorabuena por la pagina

    1. Avatar de Jordi Cabot

      No parece que el error tenga nada que ver con temas de bases de datos, sobretodo si como dices los datos los tenías antes en un blog en wordpress.com (o sea que el export/import se ha hecho via XML) y además te pasa lo mismo con los posts nuevos. Me huele más a un problema con las URLs, ya sea interno (configuración de los enlaces permanentes) o de DNS (a lo mejor al clicar en un post en concreto, en lugar de ir al post en tu servidor, el DNS dice que se vaya a buscar ese post en tu web wordpress.com anterior donde ya no está)

      1. Avatar de Eloi

        Gracias por tu rapida respuesta. No se si el tema se puede deber a que el blog no lo tengo en la raiz de la web, lo tengo en un subdominio http://www.streetwarscrew.com/anarkorunning . Cuando me da el error 404 el link de la pagina de error es http://www.streetwarscrew.com/anarkorunning/la fecha-y-el-post-en-concreto. Por eso veo raro que me indique este error. Puede que se deba a algun error en las tablas?

  7. Avatar de Eloi

    este es el error que me da : The requested URL /index.php was not found on this server.

    uno de los links a los posts que no me abre: http://streetwarscrew.com/anarkorunning/2015/05/27/anarko-entrenamientos-para-recuperar-la-forma-en-el-gym/

    1. Avatar de Jordi Cabot

      WordPress no «llega» a la página que le pides sinó que alguna redirección se cuela por medio y pasa a buscar una página index.php.

      Si no tienes ningún plugin de redirecciones activado, asegúrate que en «Ajustes» la dirección WordPress y la dirección URL estén bien indicadas. Si lo están, revisa también que la redirección a tu dominio desde WordPress.com sea tb la correcta.

        1. Avatar de Jordi Cabot

          Pues así sin revisar con detalle la configuración de todo no se me ocurre nada más que sea útil a distancia. Mejor que contactes con algun consultor WordPress que te pueda echar una mano accediendo a tu web (y servidor)

  8. Avatar de Lisette

    Hola, antes que todo felicitarte por este articulo, muy bueno.
    pero tengo un problemita, yo tengo un proyecto en wordpress pero no es local, es de un servidor al cual no tengo acceso, solo a la administracion por via web, entonces como yo exporte la bd de ese proyecto para ponerla en un wordpress local en mi pc de la casa??

    lo q hice fue ir a herramientas, exportar, y me exporta un xml, pero a la hora de importarlo que selecciono la opcion de wordpress me dice q no se pudo q acceda a foros del soporte, asi que no hay forma de que me deje importarlo en la casa.

    Saludos, y gracias de antemano.

    1. Avatar de Antonio Villegas

      Si tienes acceso al panel de administración de WordPress, tenías que haber usado un plugin como Adminer para exportar la base de datos en formato SQL. El exportador de WordPress que has usado a veces da problemillas. Por cierto, en WPrincipiante ya hablamos del plugin Adminer hace un tiempo.

  9. Avatar de jorge

    Buenas ante todo muchas gracias por el articulo es muy bueno, yo tengo una duda que no se si se puede hacer , , quiero crear dos paginas de inmobilaria con distinto dominio pero que compartan parte de información como los pisos en alquiler por ejemplo , eso es posible migrando los datos ? o alguien conoce alguna forma ? muchas gracias un saludo

    1. Avatar de David Aguilera

      Hola Jorge.

      ¡Me alegro que te haya gustado el artículo! La verdad es que sí es posible usar las funciones de importar y exportar para mover la información de un WordPress a otro. Basta con que crees la información de pisos en alquiler en la instalación A, exportes esos datos y luego los importes en la instalación B (tal y como explicamos en el artículo).

      No obstante, esto tiene alguna particularidad que hay que tener en cuenta. Si, por ejemplo, los pisos pueden estar «alquilados» o «por alquilar», y ese estado puede cambiar en cualquiera de las dos instalaciones, deberás asegurarte que las mantienes sincronizadas (de forma manual, probablemente). O si añades o borras un piso de alguna de ellas, deberás hacerlo en la otra. Para hacerlo mejor, sólo una de las dos instalaciones debería contener la información y la otra debería acceder a ella a través de alguna función/URL específica.

      ¿Nos cuentas un poco más qué necesitas?

      Un saludo,
      David

  10. Avatar de Charo
    Charo

    Hola.

    Estoy intentando cambiar de hosting porque el que tengo me está dando muchos problemas y se cae continuamente. He solicitado una copia de seguridad y me la han enviado en spl.

    En el nuevo hosting había instalado ya WordPress y actualizado la página de inicio para que la gente supiera que estábamos de reformas, y buscando cómo recuperar toda la información que tenía anteriormente, he dado con esta solución.

    Entro en desde fuera en PHPMyAdmin e importo el archivo sql que me han facilitado. Pero me da el siguiente error:

    Error
    consulta SQL:

    — Table structure for table `wp_commentmeta`

    DROP TABLE IF EXISTS `wp_commentmeta` ;
    MySQL ha dicho: Documentación
    #1046 – No database selected

    No sé cómo quitarme este error, si es que debería de borrar el WordPress instalado antes de importar el archivo sql, porque pensaba que todo se sobreescribía.

    Muchas gracias.

    1. Avatar de Nelio

      Hola Charo,

      El problema que indicas sucede porque no has seleccionado una base de datos donde cargar el archivo SQL. Una vez dentro de phpMyAdmin, antes de seleccionar la opción de Importar deberías seleccionar la base de datos donde quieres que se importen los contenidos del archivo SQL. Para ello, en la barra lateral izquierda haz clic en la base de datos que quieras (se desplegarán las tablas que contiene) y luego ya puedes seleccionar la opción de importar. Esto debería ser suficiente. ¡Espero que te funcione!

  11. Avatar de Diego
    Diego

    Hola muy buen post! Gracias a todos los que los hacen y en el publican sus necesidaes de programación.He aquí un problema con el bendito gravity forms que han mencionado al principio de las respuestas.
    Tengo un formulario hecho con el GF y deseo trasladar algun dato de este formulario a otro nuevo y así no tener que cargar siempre los mismos valores de forma repetida.
    Existe algo que se pueda implementar?
    Gracias de antemano y saludos a todos.

    1. Avatar de Antonio Villegas

      Hola Diego. Si lo que necesitas es duplicar un formulario de Gravity Forms es posible que lo que explican aquí te pueda servir. ¡Un saludo!

  12. Avatar de carol alamos

    Hola! gracias por el sitio y el post, !!!son de mucha ayuda!!! Mi problema es el siguiente; estoy migrando un blog wordpress que estaba alojado en wordpress.com a otro host de pago, pero hasta donde sé el host de origen sólo entrega el archivo .xml, así que sólo tengo eso, bueno, importé el archivo .xml en el wordpress admin del nuevo host, pero no aparecen todas páginas…. hay forma de solucionar eso? y hay forma de acceder a la base de datos del sitio alojado en wordpress.com para poder exportar tooooodo el contenido del blog (fotos, pluggins y todo lo que se pueda)
    Desde ya gracias!

    1. Avatar de David Aguilera

      Hola Carol.

      Efectivamente, por defecto WordPress (y, en concreto, WordPress.com) utiliza un formato XML para importar/exportar contenido. Según comentas, algunas páginas no se han importado correctamente… pero el problema sea que no se llegaron a exportar siquiera. Es decir, si echas de menos la página X en el nuevo blog, ¿aparece el título y contenido de esa página X en el fichero XML? Lo más probable es que no esté, pero deberías comprobarlo.

      En cuanto a cómo exportar todos los contenidos de WordPress.com, te recomiendo que leas detenidamente la documentación que ofrecen. Allí encontrarás la información sobre cómo hacerlo. No estoy seguro de si las imágenes que tengas en la biblioteca de medios se exportan o no y, en cualquier caso, las imágenes que tengas enlazadas en el contenido de tus entradas seguirán apuntando a un dominio viejo, así que es posible que tengas que encargarte de mover todo ese contenido a mano. No obstante, muchos proveedores de hosting te ayudan con la migración de una web a otra; a fin de cuentas, les interesa que «dejes» al proveedor antiguo y «vayas con ellos». Así pues, si no tienes muy claro cómo proceder, intenta ponerte en contacto con tu (nuevo) proveedor de hosting y pídeles ayuda.

      Un saludo,
      David

  13. Avatar de carol alamos

    Hola, hace un rato dejé una consulta y necesito hacer otra más porque estoy un poco perdida en el espacio:
    migré un blog desde el host wordpress.com a otro host, lo que hice fue importar un archivo .xml, a parte de faltarme páginas (2) al entrar a cada una de las que tengo aparecen todas las entradas pero! al entrar a cada una de ellas individual entro a la entrada pero con la dirección antigua…no sé cómo se enlaza…cómo puedo solucionar eso?
    Gracias muchas!

    1. Avatar de David Aguilera

      Hola de nuevo, Carol.

      En este caso, entiendo que el problema es que en una entrada cualquiera (la entrada A, por ejemplo) tenías enlaces a otras entradas (la B y la C) y cuando haces clic en el enlace a B o a C que aparece en la entrada A, el navegador te envía a las páginas B y C del sitio viejo, ¿correcto? Esto es debido a que todos los enlaces que aparecen en los contenidos de tus entradas (los que has migrado) siguen apuntando a la URL vieja. Antonio escribió una entrada muy detallada sobre cómo reemplazar los enlaces de tu web después de una migración, así que si te ves con ganas y fuerzas puedes intentarlo tú misma.

      Si no estás segura de cómo hacerlo o las cuestiones técnicas se te escapan, ponte en contacto con tu proveedor de hosting y pídeles ayuda a ellos; es posible que tengan, como te decía, un servicio de asistencia para estos casos. Y si eso no es posible, siempre puedes buscar algún WProfesional de WordPress en tu área que te ayude.

      Un saludo,
      David

  14. Avatar de Dalia Sued
    Dalia Sued

    Hola Jordi,

    Gracias por tu post, una pregunta, tengo una copia de seguridad de VaultPress que es completamente válida para restaurar mi sitio, ya que Siteground lo pudo hacer, no puedo hacer una migración de hosting a hosting. Tuve que cancelar Siteground porque mi sitio no funciona en un ambiente compartido, me da muchos problemas de iodos, etc.

    La copia tiene wp-content, wp-config, .htaccess y la sql esta en tablas o sea no esta un solo archivo, contrate a Interserver pero son unos ineptos y nunca nos pusimos de acuerdo y cancele el servicio.

    ¿Como puedo restaurar la DB a partir de las tablas?

    1. Avatar de Antonio Villegas

      Hola Dalia. Tendrás que importar las tablas en la nueva base de datos. Es posible que tengas que hacer cambios en el contenido de los archivos SQL para adaptarlos a tu nuevo hosting. Ponte en contacto con ellos y que te ayuden en el proceso.

  15. Avatar de Matías Zuber Ponce
    Matías Zuber Ponce

    Buenas, quizá llego un poco tarde pero tengo un problema con la base de datos y quizá puedan ayudarme a solucionarlo.
    Tengo una tienda woocommerce con su respectiva base de datos de wordpress. El cliente para quién estoy haciendo la tienda me ha enviado un archivo sql con toda la información necesaria con respecto a los productos.
    He añadido este nuevo sql a la base de datos de wordpress para tener ahi todas las tablas.
    Una vez están dentro de mi wordpress, ¿cómo hago para poder utilizar esta información y volcarla en la sección de productos de woocommerce?
    saludos!

    1. Avatar de Antonio Villegas

      Lo primero que te tendrías que preguntar es si la base de datos de productos que te pasó el cliente en formato SQL sigue la estructura de datos de WooCommerce. Si no es así, tendrás que hacer una migración de datos, algo mucho más complejo de explicar por aquí. Si es el caso, busca a un profesional de tu zona que te pueda ayudar con el proyecto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad de Nelio Software

Tus datos personales se almacenarán en SiteGround y serán usados por Nelio Software con el único objetivo de publicar tu comentario aquí. Con el envío de este comentario, nos das el consentimiento expreso para ello. Escríbenos para acceder, rectificar, limitar o eliminar tus datos personales.