Combinant les 2 fichiers CSV
J'essaie de combiner deux fichiers CSV en PHP. Je suis à la recherche de méthode parfaite. Voici mon code pour l'instant:
$one = fopen('data5.csv', 'r');
$two = fopen('userdata.csv', 'r');
$final = fopen('final_data.csv', 'a');
$temp1 = fread($one, filesize("data5.csv"));
$temp2 = fread($two, filesize("userdata.csv"));
fwrite($final, $temp1);
fwrite($final, $temp2);
Ou,si vous n'avez plus besoin des données d'origine, vous pourriez lire ligne par ligne le deuxième csv et l'ajouter à la première. Lorsque vous avez terminé,retirez le deuxième csv et renommer le premier..
OriginalL'auteur no_freedom | 2011-03-24
Vous devez vous connecter pour publier un commentaire.
Je vais vous donner une solution à utiliser si vous avez de grandes CVSs et vous ne voulez pas utiliser beaucoup de votre machine de la mémoire RAM (imaginez chaque CSV est de 1 go, par exemple).
Utilisation:
Fait amusant:
J'ai juste utilisé ce concat 2 fichiers CSV de ~de 500 000 lignes chacune. Il a fallu environ 5seconds et utilisé 512 ko de mémoire.
Logique:
Ouvrir chaque fichier, lire une ligne et puis les écrire dans le fichier de sortie. Oui, il peut être plus lent écrit chaque ligne plutôt que d'écrire un ensemble de tampon, mais cela permet l'utilisation de lourds fichiers, tout en étant doux pour la mémoire de la machine.
À tout moment, vous êtes en sécurité parce que le script ne lit que sur une ligne à la fois et puis l'écrit.
Profitez-en!
OriginalL'auteur Bogdan Constantinescu
Comment sur...
Noter que cette charge l'ensemble des fichiers dans la mémoire de PHP. Donc, si ils sont gros, vous pouvez obtenir memory_limit questions.
OriginalL'auteur Sander Marechal
Si vous voulez simplement concaténer les deux fichiers, vous pouvez le faire facilement avec de l'exécution d'un script shell en supposant que vous êtes sous unix comme système d'exploitation:
OriginalL'auteur Nick Weaver
OriginalL'auteur Sandeep Yadav