
Tengo un conjunto de datos bastante grande que necesito importar a MySQL. Me gustaría hacerlo de la manera más eficiente posible, ya que tendré que hacerlo repetidamente. ¿Hay trucos para esto? ¿Existe alguna forma que sea más eficiente que las declaraciones INSERT extendidas?
Para abordar las preguntas del comentario, el formato original es XML, aunque ya tengo un transformador para ponerlo en formato CSV. Estoy trabajando con MySQL 5.1.x y la base de datos de destino es InnoDB. Existen relaciones entre los datos, pero no tengo ninguna restricción y, en la mayoría de los casos, los datos no están lo suficientemente limpios como para imponerlas.
Respuesta1
Intentarimportación mysqlpuede importar directamente desde archivos CSV.
Respuesta2
yo leería elMySQLmanual, estaba pensando en INSERTAR DESPUÉS, pero LOAD DATA INFILE parece interesante "20 veces más rápido"....
Respuesta3
Existe una herramienta ETL de código abierto llamadaIntegración de datos Pentahoque tiene una opción de carga masiva de MySQL (en la carpeta experimental en la vista Diseño). También puede cargar datos rápidamente de manera independiente de la plataforma utilizando los pasos de entrada CSV y salida de tabla. Si necesita realizar algún procesamiento con los datos antes de cargarlos, puede codificar esa lógica dentro de este programa.
Respuesta4
Incluso un "inserto ..." masivo no debería llevar demasiado tiempo. Exporté una nueva base de datos JIRA de 200 MB y la cargué en una base de datos virgen en aproximadamente 30 segundos.