Eliminar registros duplicados en MySQL

Para eliminar registros duplicados en MySQL basta con una sola línea:

Solo debemos reemplazar los valores correspondientes:

nombre_de_tabla: La tabla en cuestión. Deberemos hacer esto por cada tabla que necesitemos procesar.

nombre_campo_valores_unicos: El campo de la tabla que debe contener valores unicos.

Importar fichero SQL de gran tamaño (actualizado)

A partir del problema para importar un fichero SQL de gran tamaño (http://cesarmansilla.com/blog/2014/11/06/importar-fichero-sql-gran-tamano/) me topé con la necesidad de optimizar aún más el proceso, ya que al tener que pasar esta base desde el servidor de desarrollo al servidor de producción la solución planteada no resultó la más óptima.

Lo que hice fué sencillo, pero en una primera instancia se me pasó por alto: creé el fichero .sql nuevamente, pero esta vez con batch inserts. El fichero final resultó de 1/4 parte del peso (de 442MB a 123MB). Luego lo comprimí con 7-Zip para obtener un archivo .gz de 43MB. Nada mal!

Al código que utilicé en un principio le hice algunos ajustes y quedó de la siguiente manera:


Este es el ejemplo de lo que genera el script:

 

Importar fichero SQL de gran tamaño

Me topé con la necesidad de importar un fichero SQL de gran tamaño (8,500,00 registros) a mi base de datos. Pasé por varias instancias antes de encontrar la solución.

En principio, los códigos me fueron entregados en un fichero txt, separados cada uno por un salto de linea (al menos es algo). El tamaño de este archivo era de 89MB, a partir de acá sabía que estaba frente a un problema.

Intento #1: Procesar el fichero tal como estaba. Pasaron 5 minutos y recién se habían insertado 6,000 registros…

Cambié algunas directivas para asegurarme de que no se generara un timeout,  leí el contenido del archivo y lo recorrí con un bucle, primero intenté insertar en base directamente, luego mostrar las consultas en pantalla. Ninguna funcionó.

 Intento #2: Divide y vencerás (si no te cansas antes)…

Abrí el archivo y fuí dividiendolo en varios archivos más pequeños(copy / paste). En principio fueron de a 1,000,000 de códigos, luego 500,000 y así… Después pensaba recorrer cada uno de estos archivos, pero ejecutar tantas consultas no solucionaba el problema.

Intento #3: Desde linea de comandos. Consta de varios pasos porque tuve que crear el archivo “.sql“, pero si ya tenés este archivo, solamente deberás hacer la parte de ejecución desde consola.

Creación del archivo SQL:

Ejecución desde consola:

Abrir la consola (Inicio > “cmd” desde Windows) y ubicarse el directorio donde la instalación de MySQL, por ejemplo.

Nos conectamos a la base de datos con la siguiente instrucción (luego de ejecutarla nos pedirá ingresar la contraseña):

A partir de acá podemos ejecutar sentencias en nuestra base de datos, en nuestro caso ejecutaremos las sentencias del archivo “mysql_full.sql” que acabamos de crear (442MB):

Solo resta esperar a que termine la ejecución, el tiempo dependerá de la potencia del equipo. Pero sin duda es la forma más rápida y efectiva de importar fichero SQL de gran tamaño.