Fichier de commandes à split .fichier csv
J'ai une très grande .fichier csv (>500 mo) et je veux briser ce en en de plus petites .les fichiers csv dans l'invite de commande. (En fait, d'essayer de trouver un linux "split" dans Windows".
Ce doit être un script batch comme ma machine est équipé de windows, et en demandant des logiciels est une douleur. Je suis tombé sur un certain nombre d'exemples de codes (http://forums.techguy.org/software-development/1023949-split-100000-line-csv-into.html), cependant, il ne fonctionne pas lorsque j'exécute le batch. Tout ce que je obtenir un fichier de sortie qui n'est 125kb lorsque j'ai demandé à analyser tous les 20 000 lignes.
Quelqu'un a déjà rencontré un problème similaire et comment l'avez-vous résolu le problème?
- Si vous utilisez Windows, il n'est pas de DOS. Vous parlez de l'Invite de Commande Windows (cmd.exe)
- L'utilisation de split à partir de la GnuWin CoreUtils?
- Pensé à ça, mais encore une douleur pour obtenir le logiciel sur mon lieu de travail. Ce problème a été résolu grâce à tous ceux qui ont contribué.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Comme indiqué dans le code ci-dessus, il va diviser l'origine de fichier csv dans plusieurs fichier csv avec une limite de 20 000 lignes. Tout ce que vous avez à faire est de changer le
!file!
et!limit!
variable en conséquence. Espérons que cela aide.set limit=200
àset limit=20000
et il devrait vous aider à faire votre travail 🙂lineCounter=1+%limit%
etfilenameCounter=0
; puis en déplaçant laset splitfile
dans leif
composé, après l'incrémentationfilenameCounter
. De cette façon, le nom de fichier sera définie une seule fois par 20 000 lignes, pas à chaque ligne...Gratuitement une application windows qui n'a que
http://www.addictivetips.com/windows-tips/csv-splitter-for-windows/
Utiliser le cgwin commande SPLIT.
Les échantillons
De diviser un fichier tous les 500 lignes de compte:
par défaut, il ajoute xa,xb,xc... de nom de fichier après l'extension
Pour générer des fichiers avec des nombres et se terminant par l'extension correcte, utiliser à la suite de
la position de l'-d ou-l n'a pas d'importance,
Pour plus d': split --help
Si le fractionnement des fichiers très volumineux, la solution que j'ai trouvé est une adaptation de cette, avec PowerShell "embedded" dans un fichier de commandes. Cela fonctionne rapide, contrairement à beaucoup d'autres choses que j'ai essayé (je ne sais pas sur les autres options posté ici).
La façon d'utiliser
mysplit.bat
ci-dessous estRemarque: Le script a pour but d'utiliser le premier argument que la répartition de la taille. Il est actuellement codé en dur à 100 mo. Il ne devrait pas être difficile à résoudre ce problème.
Note 2: Le filname doivent être entourés de guillemets simples. D'autres solutions de rechange pour la citation, apparemment, ne fonctionne pas.
Note 3: Il divise le fichier en nombre d'octets, et non pas au nombre de lignes. Pour moi, c'était assez bon.
Quelques lignes de code pourrait être probablement ajoutées pour compléter chaque bloc de lecture, jusqu'à la prochaine CR/LF. Ce sera divisée en lignes pleines (pas avec un nombre constant d'entre eux), sans sacrifice de temps de traitement.
Script
mysplit.bat
:csv
par un certain nombre d'octets peut-être pas la meilleure des idées. Les lignes ne devrait pas être coupée en deux.csv
fin ou débutant dans le milieu d'une valeur de quelque part dans le milieu d'une ligne semble comme un cauchemar pour moi. Mais que f n'a pas d'importance, ce qui semble être une bonne réponse (et la seule qui ne séparent à la taille, au lieu de numéros de lignes).Cela va vous donner des lignes
1 to 20000
dansnewfile1.csv
et les lignes
20001 to the end
dans le fichiernewfile2.csv
Il surmonte les 8K limite de caractères par ligne trop.
Il utilise un helper fichier batch appelé
findrepl.bat
de - https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.batPlace
findrepl.bat
dans le même dossier que le fichier de commandes ou sur le chemin.C'est plus solide qu'un simple fichier de commandes, et plus rapide aussi.
J'ai trouvé cette question tout en regardant pour une solution similaire. J'ai modifié la réponse de @Dale a donné pour répondre à mes fins. Je voulais quelque chose qui était un peu plus souple et a eu une erreur de piégeage. Juste pensé que je pourrais le mettre ici pour une personne qui cherche la même chose.