Domanda

Hai bisogno di elaborare file CSV di grandi dimensioni con PHP. Lavorare con FGetCSV e le prestazioni sembra abbastanza buono.Per un'elaborazione ancora migliore / più veloce vorrei che i file CSV abbiano i nomi delle colonne sulla prima riga, che mancano in questo momento.

Ora vorrei aggiungere una riga superiore con i nomi delle colonne al file CSV con PHP prima di elaborare i file con FGetCSV.

C'è un modo per aggiungere una linea superiore la parte superiore del file con PHP facilmente?Oppure dovrebbe significare che devo prendere un approccio come sotto?

    .
  1. Elenco elemento
  2. Elenco elemento
  3. Crea un file temp
  4. Aggiungi i nomi delle colonne a questo file temp
  5. Leggi il contenuto del file CSV originale
  6. Metti il contenuto originale CSV nel file TEMP
  7. Elimina file originale
  8. Rinomina il file temp

    Qualsiasi feedback su come fare questo nel modo più efficace è molto apprezzato.Grazie per il tuo tempo :)

È stato utile?

Soluzione

    .
  1. Leggi il file CSV utilizzando FGetCSV.
  2. Chiudi il file.
  3. Apri il file usando la modalità "w" (scrittura).
  4. Scrivi le intestazioni.
  5. Chiudi il file.
  6. Apri il file usando la modalità "A" (APPEND).
  7. Scrivi il file CSV usando FUPTCSV. Voilà!

Altri suggerimenti

Si prega di provare questo .. molto più semplice e dritto 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);
.

hai finito.Spero che questo aiuti ...

Basta fallo come ti hai fornito.Non c'è modo semplice per estendere un file all'inizio anziché la fine.È come scrivere su carta.È facile aggiungere nuove linee sotto il tuo testo ma non puoi scrivere sopra il testo.

Non utilizzare fopen($file, "r+") o fopen($file, "c") in quanto ciò rimuoverà le linee esistenti all'inizio o anche alle linee del file.

Perché non definire manualmente l'intestazione nel tuo codice, specialmente se ogni file ha lo stesso intestazione? Se hai davvero bisogno di inserire l'intestazione nei file CSV prima di elaborarli forse dovresti prendere in considerazione l'utilizzo di SED come questo: sed -i 1i'"header 1","header 2"' file.csv

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top