Quiero cargar un archivo csv grande aproximadamente 10,000,000 registros en la tabla mysql que también contienen el mismo número o más. de registros y también algunos registros duplicados. Intenté el archivo de datos locales, pero también me está llevando más tiempo. ¿Cómo puedo resolver esto sin esperar mucho tiempo? Si no se puede resolver, ¿cómo puedo hacerlo con AJAX para enviar algunos registros y procesarlos a la vez y lo haré hasta que se cargue/procese todo el csv?Cargar archivo CSV grande aproximadamente 10,000,000 registros en la tabla mysql también contiene filas duplicadas
Respuesta
Prueba esto:
load data local infile '/yourcsvfile.csv' into table yourtable fields terminated by ',' lines terminated by '\r\n'
LOAD DATA INFILE
no va a ser vencido velocidad se refiere. Hay algunas cosas que puede hacer para acelerarlo:
- eliminar o inhabilitar algunos índices (pero, por supuesto, que llegaremos a esperar a que se construyan después de la carga, pero esto es a menudo más rápido.). Si está utilizando MyISAM, puede
ALTER TABLE *foo* DISABLE KEYS
, pero InnoDB no lo admite, desafortunadamente. Tendrás que dejarlos en su lugar. - Optimice su configuración my.cnf. En particular, es posible que pueda desactivar muchas cosas de seguridad (como fsync). Por supuesto, si sufre un bloqueo, tendrá que restaurar una copia de seguridad y volver a iniciar la carga. Además, si está ejecutando el my.cnf predeterminado, la última vez que lo revisé es bastante subóptimo para una máquina de base de datos. Hay muchas guías de afinación disponibles.
- Compre un hardware más rápido. O alquila algunos (por ejemplo, prueba una instancia rápida de Amazon ECC).
- Como menciona @ZendDevel, considere otras soluciones de almacenamiento de datos, si no está bloqueado en MySQL. Por ejemplo, si solo está almacenando una lista de números de teléfono (y algunos datos con ellos), una tabla simple de hash será mucho más rápida.
Si el problema es que está matando el rendimiento de una base de datos, puede dividir su archivo CSV en varios archivos CSV y cargarlos en fragmentos.
En realidad, estoy lidiando con la solución de lista blanca para números móviles en un centro de llamadas, y tengo que cargar esta cantidad de datos todos los días (hay filas duplicadas). – akashdeep
@ user969923: Parece que tienes que combinar la optimización de my.cnf si aún no se ha hecho y comprar hardware más rápido. La gente de Serverfault probablemente pueda ayudarlo más con detalles. – derobert
¿Cómo puedo hacer con HASH TABLE. Tengo solo 5 campos y solo uno es clave principal (número de teléfono móvil). Dame un ejemplo. – akashdeep
Según su motor de almacenamiento, esto puede llevar mucho tiempo. Me di cuenta de que con MYISAM va un poco más rápido. Acabo de probar con el mismo conjunto de datos y finalmente fui con PostgreSQL porque era más robusto al cargar el archivo. Innodb fue tan lento que lo aborté después de dos horas con el mismo tamaño de datos, pero era de 10,000,000 de registros por 128 columnas llenas de datos.
Como esta es una lista blanca que se actualiza a diario, ¿no significa que hay una gran cantidad de duplicados (después del primer día)? Si este es el caso, haría la carga mucho más rápida para hacer un script simple que verifica si el registro ya existe antes de insertarlo.
Intentar esta consulta:
$sql="LOAD DATA LOCAL INFILE '../upload/csvfile.csv'
INTO TABLE table_name FIELDS
TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n' "
cuenta de que era el mismo problema y encontrar una manera de salir. Puede verificar el proceso para cargar archivos CSV grandes usando AJAX.
- 1. Eliminar filas duplicadas de un archivo grande en Python
- 2. La combinación Mysql da filas duplicadas
- 3. cómo eliminar filas duplicadas de una tabla en mysql
- 4. Obtener lista de filas duplicadas en MySQL
- 5. Eliminar varias filas duplicadas en la tabla
- 6. Comprobando si un archivo CSV grande (1m filas) tiene los mismos datos que una tabla MySQL
- 7. Buscar cadenas duplicadas en un archivo grande
- 8. , prevención de la inserción de filas duplicadas en php/mysql
- 9. Cargar datos CSV en MySQL en Python
- 10. ¿Cómo puedo encontrar efectivamente filas de blob duplicadas en MySQL?
- 11. Cómo importar archivos CSV a la tabla MySQL
- 12. Importar archivo csv grande usando phpMyAdmin
- 13. filas duplicadas en la vista de tabla en uitableviewcell
- 14. Mantener una tabla grande de valores únicos en MySQL
- 15. Eliminación de filas duplicadas de una tabla
- 16. ¿Cómo importar un archivo csv en MySQL workbench?
- 17. Renombrar filas duplicadas
- 18. Cómo eliminar filas duplicadas y actualizar la tabla
- 19. ¿Qué tan grande es demasiado grande para una tabla MySQL?
- 20. Clave principal grande: 1+ mil millones de filas MySQL + InnoDB?
- 21. ¿Cómo encontrar filas duplicadas basadas en múltiples campos en MySQL?
- 22. ¿Cómo detectar filas duplicadas en una tabla de SQL Server?
- 23. ¿Cómo puedo eliminar filas duplicadas en una tabla?
- 24. ¿Cómo eliminar filas duplicadas del archivo plano utilizando SSIS?
- 25. ¿Cómo dividir una tabla que contiene 100mil + cantidad de registros?
- 26. Optimización de ORDER BY Consulta en la tabla grande MySQL
- 27. ¿Cómo manejar una tabla grande en MySQL?
- 28. Seleccionar filas aleatorias de la tabla MySQL
- 29. Eliminar filas duplicadas (no eliminar todas las duplicadas)
- 30. Consolidar filas duplicadas
Vas a tener que explicar por primera vez esta nueva notación número al que he llegado con. – mowwwalker
¿Son mil millones de registros o 10 millones? – webbiedave
a través de ajax sería aún más lento. si desea que los comandos de cargar carga no tarden tanto, divida la csv en trozos más pequeños. –