Pregunta

Necesidad de procesar archivos csv grandes con php.Trabajar con fgetcsv y el rendimiento parece bastante bueno.Para un procesamiento aún mejor y más rápido, me gustaría que los archivos csv tuvieran nombres de columna en la primera fila, que faltan en este momento.

Ahora me gustaría agregar una fila superior con nombres de columnas al archivo csv con PHP antes de procesar los archivos con fgetcsv.

¿Hay alguna manera de agregar fácilmente una línea en la parte superior del archivo con php?¿O esto significaría que tengo que adoptar un enfoque como el siguiente?

  1. Elemento de lista
  2. Elemento de lista
  3. crear un archivo temporal
  4. agregue los nombres de las columnas a este archivo temporal
  5. leer el contenido del archivo csv original
  6. poner el contenido csv original en el archivo temporal
  7. eliminar archivo original
  8. cambiar el nombre del archivo temporal

Cualquier comentario sobre cómo hacer esto de la manera más eficaz será muy apreciado.Gracias por tu tiempo :)

¿Fue útil?

Solución

  1. Lea el archivo CSV usando FETCSV.
  2. cerrar el archivo.
  3. Abra el archivo usando el modo "W" (escritura).
  4. escribe los encabezados.
  5. cerrar el archivo.
  6. Abra el archivo usando el modo "A" (Anexo).
  7. Escriba el archivo CSV usando FPUTCSV. Voila!

Otros consejos

Por favor, intente esto .. mucho más sencillo y directo al punto.

  $file = 'addline.csv';
  $header = "Name, IP,  Host, RAM, Task, NS \r\n";
  $data = file_get_contents($file);
  file_put_contents($file, $header.$data);

que hayas terminado.Espero que esto ayude a ...

Simplemente hazlo de la forma que proporcionaste.No existe una manera fácil de extender un archivo al principio en lugar del final.es como escribir en papel.es fácil agregar nuevas líneas debajo del texto, pero no puedes escribir encima del texto.

no usar fopen($file, "r+") o fopen($file, "c") ya que esto eliminará las líneas existentes al principio o incluso todas las líneas de su archivo.

¿Por qué no definir el encabezado en su código manualmente, especialmente si cada archivo tiene el mismo encabezado? Si realmente necesita insertar el encabezado en los archivos CSV antes de procesarlos, quizás debe considerar usar sed Me gusta esto: sed -i 1i'"header 1","header 2"' file.csv

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top