Importar una base de datos SQL de gran tamaño por PhpMyAdmin.

Descargas disponibles:

A pesar de la gran utilidad de PhpMyAdmin que permite importar bases de datos, incluso comprimidas (gzip, bzip2, zip), lamentablemente tiene grandes limitaciones en cuanto al tamaño de importación.

Cuando queremos restablecer una base de datos de una web, es problabe que su tamaño supere con creces los 2 Mb que tiende a imponer un servidor, aunque no siempre es así,  pero que en muchas configuraciones de PhpMyAdmin se deja restringido a esa cantidad.

Siempre que importamos directamente una base de datos es recomendable hacerlo en archivo comprimido, pues un tamaño de 50 Mb en SQL se queda aproximadamente en 8 Mb comprimido.

Una primera opción pasa por configurar el archivo PHP.INI habitualmente en (etc/php5/apache2/php.ini) o bien si no tenemos acceso al mismo, desde el panel de control de nuestro proveedor de alojamiento establecer los siguientes parámetros, siempre que no lo permita:

  •  max_execution_time a un valor de 200
  •  memory_limit al menos a 128MG
  •  post_max_size subir a unos 60 MG
  •  upload_max_filesize establecer en 60MG

Todo dependerá del tamaño de la base de datos que queramos importar en archivo comprimido, esta configuración es aproximada ya que el tiempo de ejecución se alarga a 200 pero es posible que no sea suficiente.

Si esto falla y no podemos importar nuestra base de datos por PhpMyAdmin, tenemos una opción que aunque a primera vista eche para atrás a muchos usuarios, es altamente eficaz y consiste en trocear nuestra base de datos e ir importándola por fragmentos.

Si bien es verdad que hay alternativas como BigDump que tiene un buen funcionamiento pero requiere la configuración del script previamente y luego subir por FTP la base de datos con el propio BigDump, lo cual no tiene mayor inconveniente pero el problema reside en que es posible que se produzca un error por la exportación previa de la base de datos desde PhpMyAdmin y por tanto esta opción ya no está disponible.

Así que, como decíamos, una alternativa muy útil es trocear la gran base de datos en partes e importarlas desde PhpMyAdmin, y no necesariamente de 2Mb aunque ese sea el límite que nos muestre en pantalla, ya que si hemos realizado la configuración de PHP previa seguramente nos deje subir un tamaño muy superior.

Para ello usaremos el programa SQLDumpSplitter 2 desarrollado por el alemán Philip Lehmann-Bohm

Una vez ejecutado el programa lo primero que debemos hacer es seleccionar la ubicación de nuestra base de datos. En este caso es una base de datos de 100 Mb y vamos a cortarla en fragmentos de 15 Mb, paso 2, porque será posible importarlos desde PhpMyAdmin, en caso de que no sea posible se puede reducir el tamaño de los fragmentos. El paso 3 es donde elegimos la ubicación donde se crearán los fragmentos, dentro de una propia carpeta automática que genera el programa, y ya solo queda pulsar Execute y esperar.

sqldumpsplitter

Una vez terminado se generan los archivos que debemos importar desde PhpMyAdmin por orden, es muy importante que el primero en importar sea DataStructure ya que será el que nos genere la estructura de la base de datos.

sqldumpsplitter2

Si nos fijamos, vemos que estamos importando la base de datos pura, sin comprimir lo cual nos genera mayor tiempo y peso pero es la forma más segura que hemos probado sin errores. Cabe destacar que si el programa tiene cualquier error hay que cerrarlo y volver a abrirlo o el botón Execute no funcionará.

Ya solo nos falta importar los fragmentos en el formato SQL desde PhpMyAdmin.

import-database-phpmyadmin