Question

Besoin de traiter de grands fichiers CSV avec PHP. Travailler avec FGETCSV et les performances semble assez bonne. Pour un traitement encore meilleur / plus rapide, je voudrais que les fichiers CSV aient des noms de colonne sur la première ligne, qui manquent actuellement.

Maintenant, je voudrais ajouter une ligne supérieure avec des noms de colonnes au fichier CSV avec PHP avant de traiter les fichiers avec fGetCSV.

Existe-t-il un moyen d'ajouter une ligne en haut du haut du fichier avec PHP facilement? Ou cela signifierait-il que je dois adopter une approche comme ci-dessous?

  1. Élément de la liste
  2. Élément de la liste
  3. Créer un fichier temporaire
  4. Ajoutez les noms de colonne à ce fichier temporaire
  5. Lire le contenu du fichier CSV original
  6. Mettez le contenu CSV original dans le fichier temporaire
  7. Supprimer le fichier d'origine
  8. renommer le fichier temporaire

Tout commentaire sur la façon de procéder de la manière la plus efficace est très apprécié. Merci pour votre temps :)

Était-ce utile?

La solution

  1. Lisez le fichier CSV à l'aide de FGETCSV.
  2. Fermez le fichier.
  3. Ouvrez le fichier à l'aide du mode "w" (écriture).
  4. Écrivez les en-têtes.
  5. Fermez le fichier.
  6. Ouvrez le fichier à l'aide du mode "A" (Ajouter).
  7. Écrivez le fichier CSV à l'aide de fputcsv. Le tour est joué!

Autres conseils

Veuillez essayer ceci .. beaucoup plus simple et droit au point.

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

Vous avez terminé. J'espère que cela t'aides...

Faites-le comme vous l'avez fourni. Il n'y a pas de moyen facile d'étendre un fichier au début au lieu de la fin. C'est comme écrire sur papier. Il est facile d'ajouter de nouvelles lignes sous votre texte, mais vous ne pouvez pas écrire au-dessus de votre texte.

N'utilisez pas fopen($file, "r+") ou fopen($file, "c") car cela supprimera les lignes existantes au début ou même toutes les lignes de votre fichier.

Pourquoi ne pas définir manuellement l'en-tête dans votre code, surtout si chaque fichier a le même en-tête? Si vous avez vraiment besoin d'insérer de l'en-tête dans des fichiers CSV avant de les traiter, vous devriez peut-être envisager d'utiliser sed comme ça: sed -i 1i'"header 1","header 2"' file.csv

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top