Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/12/2015, 06:07
Avatar de chucky2083
chucky2083
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Leer archivo grande y manipularlo

Eso intente, pero solo quise leerlo e imprimirlo en el navegador. Y muere.

El funcionamiento es asi. Tengo 1600 proveedores cargados en la base de datos, y cada mes bajo un archivo de retenciones de la AFIP (Administracion Federal de Ingresos Publicos). El archivo que bajo pesa unos 100Mb y posee aproximadamente 1600000 lineas. En cada linea hay un proveedor (CUIT, % de RETENCION, y otros datos mas).



Lo que tengo que hacer es comparar cada uno de los 1600 proveedores de mi base de datos, con los que estan en el archivo, para actualizar el % de la retencion.

Quisiera hacerlo como decis, cargar los proveedores en un arreglo y comparar cada linea del txt con el arreglo, pero con solo imprimir el archivo muere. Los tiempos de ejecucion los puse con numeros grandes pero igual a los 7:30 min, me lanza un error 500.




Cita:
Iniciado por ocp001a Ver Mensaje
¿Acaso por cada proveedor de tu BD relees el archivo completo?

No estoy muy seguro de entender para qué requieres la lectura del archivo, pero 1600 datos no son muchos.

Podrías meter esos 1600 proveedores en un arreglo en memoria, y al leer el archivo (sólo una vez) cuando encuentres uno que esté en tu arreglo lo actualizas. Pero deberías dar más datos sobre la utilidad de ese archivo, y el procedimiento que realizas para actualizar tus datos, ya que podría no estar optimizado.

Si no son 1600 si no los 1600000 que dices que tiene el archivo, entonces quizá si sea necesario plantear otra estrategia.

Por cierto, 7 minutos no es mucho tiempo, yo he tenido que importar datos en formato texto de forma similar y cuando son realmente muchos datos, pueden tomar hasta unos 20 minutos, por lo que igualmente puede que sea necesario que aumentes el tiempo de ejecución de tu script.

Última edición por chucky2083; 21/12/2015 a las 06:34