Problema en mysql con insert

Hola espero puedas ayudarme, yo también trabajo con mysql y php, hace poco tengo un trabajo en el que debo tratar de insertar un listado de afiliados de cerca de 300.000 registros que están en un csv, al fin encontré varios scripts que me convierten y permiten anexar los datos a una tabla en mysql, pero cuando los ejecuto se desborda la memoria asignada para los scripts, y eso que ya modifique el php.ini y le subí la memoria a 150 mb. Probé el script con un csv de apenas 2000 registros y me trabaja óptimamente. Que podrá ser, ¿sera qué el mysql no acepta un insert de este tamaño?
Es la primera vez que trabajo con una bd tan grande por eso no que hacer.
Si conoces algún script te agradecería.
Gracias

3 Respuestas

Respuesta
1
El insert no se hace de todo, se hace de registro en registro.
Puedes insertarlo desde php con el bigdump (busca en google para descargarlo)
Yo lo he utilizado para millones de registros y ningún problema, no tuve que cambiar php.ini
Respuesta
1
Está claro que 300.000 registros son muchos para introducirlos en una sola sentencia SQL. Te recomiendo que alteres la rutina para que haga un INSERT cada 2000 registros y luego continué con los siguientes 2000 y así sucesivamente.
Las sentencias SQL pueden ser muy largas pero no vale la pena abusar de eso. Cada registro puede ocupar mucho y estás forzando a que MySQL procese todos los registros de una sola vez.
Respuesta
1
¿Y por qué no pones el script en un ciclo y pasas los registros en lotes de 2000 si así te funciona bien?
Recuerda descargar el script de la memoria en cada ciclo para evitar el desbordamiento y siempre ten un respaldo de toda la información para casos de emergencia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas