Estos días habréis comprobado (si me seguís a en twitter) que hemos estado peleándonos con la importación de un fichero de dimensiones considerables en MySQL. Concretamente el fichero pesaba casi 600MB y contenía instrucciones SQL correspondientes a una tabla de una base de datos con más de 12 millones de registros… la realidad es que no habíamos lidiado con algo de estas dimensiones hasta la fecha, y menos aun para tener que importarla desde una BBDD que existía previamente.
Ante este reto tienes varias alternativas… la mayoría de ellas ideas que NO funcionan. Hemos pensado que contarlas por aquí puede ahorraros a alguno de vosotros las pruebas ;)
- Abrir el fichero config.inc.php que se encuentra en la carpeta phpmyadmin
- Dentro del fichero encontrar la línea que contiene la variable $cfg[‘UploadDir’] y asignarle un valor con el nombre de la carpeta que queráis, en nuestro caso «upload».
- Crear dentro de la carpeta phpmyadmin una carpeta con el nombre que pusisteis en el anterior punto («upload»).
- Copiar en su interior el fichero SQL que deseáis ejecutar sin tan siquiera subirlo por interfaz web de phpMyAdmin.
- Acceder a phpMyAdmin via navegador, entrar en la base de datos deseada donde importar la tabla y podréis comprobar que aparece un nuevo selector debajo del botón examinar que permite localizar los ficheros SQL que se encuentran en el directorio que indicamos en el fichero de configuración anteriormente.
- Seleccionar el fichero deseado y lanzar la ejecución.
Este método incluso detecta que es un fichero de grandes dimensiones y ofrece la posibilidad de continuar donde corte la ejecución, pero como os digo desgraciadamente en nuestro caso al cambo de un par de interrupciones falló todo.
Con respecto a BigDump añado que he encontrado hilos en Internet que dicen que para ficheros realmente grandes no acaba de funcionar, aunque esto evidentemente hay que comprobarlo en cada caso ya que puede deberse a muchos factores. Le damos un voto de confianza y seguro que lo probaré.
Básicamente se trata de acceder a la línea de comandos y una vez allí localizar y acceder a la carpeta donde está la instalación de mysql:
cd d:\wamp\mysql\bin
(la ruta que mostrarmos evidentemente es la de la instalación en mi máquina).
Una vez estamos en ese directorio lanzamos la instrucción:
mysql.exe -use nombreMiBaseDeDatos -u root -p
Nos preguntrará la contraseña para el usuario que indiquemos (en el ejemplo anterior «root») y una vez conectados nos mostrará un símbolo de consola como este:
mysql>
Donde ya podremos ejecutar la sentencia que nos permita lanzar la ejecución del fichero en cuestión:
mysql> source d:\wamp\pypmyadmin\upload\miFichero.sql;
(en nuestro ejemplo el fichero estaba en esa ruta, pero podrías incluso colocarlo en la carpeta mysql y de esta forma simplemente poner su nombre sin ruta).
En ese momento la línea de comandos comenzará a trabajar como si estuviera poseída, ejecutando sentencias durante el tiempo que sea necesario hasta terminar. En nuestro caso se ha tirado más de 15 minutos… pero esto lógicamente depende de la potencia de la máquina, rendimiento, etc.
Así que ya sabéis, si os enfrentáis alguna vez a un fichero SQL de dimensiones considerables, la línea de comandos demuestra ser totalmente efectiva y por cierto, bastante rápida :)