Cómo importar el contenido de tu WordPress a partir de un archivo SQL

Publicada en WordPress.

Mira nuestro vídeo

Existe una versión mejor de tu web

Comparte este artículo

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 comentarios en «Cómo importar el contenido de tu WordPress a partir de un archivo SQL»

  1. 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. 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. 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. 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. 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.

  4. 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. Hola Álvaro. Correcto, Adminer funciona perfectamente en un entorno local. El resto como dices via FTP es lo más rápido

  5. 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. 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. 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. 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)

  6. 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. 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.

  7. 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. 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

  8. 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. 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!

  9. 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.

  10. 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. 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

  11. 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. 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

  12. 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. 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.

  13. 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. 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

No publicaremos tu correo electrónico. Los campos obligatorios están marcados con: •

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

Al marcar la casilla de aceptación estás dando tu legítimo consentimiento para que tu información personal se almacene en SiteGround y sea usada por Nelio Software con el propósito único de publicar aquí este comentario. Contáctanos para corregir, limitar, eliminar o acceder a tu información.