J'ai un gros fichier avec des dizaines de milliers de lignes contenant des données séparées par |
pour l'insertion en bloc dans ma base de données. Je sais qu'il devrait y avoir 10 colonnes. Étant donné que certaines données peuvent contenir accidentellement le délimiteur |
, des erreurs peuvent se produire car le nombre de colonnes ne correspond pas pour cette ligne.Comment vérifier le nombre de colonnes pour chaque ligne dans un fichier csv?
Je suis en train de compter le nombre de lignes qui ont plus de 20 colonnes pour vérifier que le fichier est valide:
@ECHO OFF
set /a count=0
FOR /f "tokens=10,* delims=|" %%i in (%1) DO (
if not "%%j"=="" (
set /a count+=1
)
)
echo %count%
:eof
Il fonctionne bien ... mais seulement si aucun champ est vide, dans ce cas, le nombre est déplacé parce que delims
poignées délimiteurs comme des espaces blancs
e.g
1|2|3|4|5|6|7|8|9|10 => cool, 10 columns
1|2|3|4|5|6|7|8|almost got|you|10 => found 11 columns
1|2|3|4||6|7|8|got|you|10 => damn, reports as 10 columns
Comment puis-je résoudre ce en utilisant uniquement la ligne de commande/lot de Windows?
N.B. Je ne peux pas modifier le fichier pour inclure des données entre guillemets ou quelque chose.
Grand, ne savait même pas findstr existait – hoang