Necesito insertar aproximadamente 1,8 millones de filas de un archivo CSV en una base de datos MySQL. (solo una tabla)MySQL Inserción de grandes conjuntos de datos del archivo con Java
Actualmente utiliza Java para analizar el archivo e insertar cada línea.
Como se puede imaginar, esto toma bastantes horas para ejecutarse. (10)
La razón por la que no estoy conectando directamente desde el archivo al archivo base, es que los datos deben manipularse antes de agregarlos a la base de datos.
Este proceso debe ser ejecutado por un administrador de TI allí. Así que lo he configurado como un buen archivo por lotes para que se ejecuten después de que suelten el nuevo archivo csv en la ubicación correcta. Por lo tanto, tengo que hacer que esto funcione bien al dropear el archivo en una ubicación determinada y ejecutar un archivo por lotes. (Entorno de Windows)
Mi pregunta es, ¿cuál sería la forma más rápida de insertar esta cantidad de datos; inserciones grandes, a partir de un archivo de análisis temp o de una inserción a la vez? alguna otra idea posiblemente?
La segunda pregunta es, ¿cómo puedo optimizar mi instalación de MySQL para permitir inserciones muy rápidas? (habrá un punto en el que también se requiere una gran selección de todos los datos)
Nota: la tabla eventualmente se perderá y todo el proceso se ejecutará nuevamente en una fecha posterior.
Algunas aclaraciones: actualmente utilizando ... opencsv.CSVReader para analizar el archivo y luego hacer una inserción en cada línea. Sin embargo, estoy relatando algunas columnas e ignorando otras.
Más aclaración: local DB tabla MyISAM
No inserte por línea, por lotes hasta un montón de filas y crea menos DB llama, su velocidad subirá drásticamente. Vea mi respuesta para un simple ejemplo de procesamiento por lotes de PreparedStatement. – Hardwareguy