Char non valide entre le jeton encapsulé et le délimiteur dans la bibliothèque Apache Commons CSV
J'obtiens l'erreur suivante lors de l'analyse du fichier CSV à l'aide de la Apache Commons CSV bibliothèque.
Exception in thread "main" java.io.IOException: (line 2) invalid char between encapsulated token and delimiter
at org.apache.commons.csv.Lexer.parseEncapsulatedToken(Lexer.java:275)
at org.apache.commons.csv.Lexer.nextToken(Lexer.java:152)
at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:450)
at org.apache.commons.csv.CSVParser.getRecords(CSVParser.java:327)
at parse.csv.file.CSVFileParser.main(CSVFileParser.java:29)
Quelle est la signification de cette erreur ?
source d'informationauteur Santhosh Sridhar
Vous devez vous connecter pour publier un commentaire.
Nous sommes tombés sur cette question lorsque nous avions intégré de devis dans notre base de données.
Solution a été
CSVFormat csvFileFormat = CSVFormat.DEFAULT.withQuote(null);
@Cuga astuce nous a aidé à le résoudre. Merci @Cuga
Code complet est
Résultat est
Cette ligne dans le fichier CSV contient un caractère non valide entre l'un de vos cellules et de la fin de la ligne, à la fin du fichier, ou de la cellule d'à côté. Une cause très fréquente pour cela est un échec pour échapper à votre encapsulation de caractère (le caractère qui est utilisé pour "envelopper" chaque cellule, de sorte CSV sait où une cellule (token) commence et se termine.
J'ai trouvé la solution au problème.
Un de mes fichier CSV a un attribut comme suit:
"attribut avec imbriqué "citation" "
En raison de imbriquée citation dans l'attribut de l'analyseur échoue.
Pour éviter le problème ci-dessus échapper à la imbriquée citer comme suit:
"attribut avec imbriqué """"citation"""" "
C'est la seule façon de résoudre le problème.
Nous avons couru dans cette dans cette même erreur avec les données contenant des citations dans d'autres sociétés non cotées d'entrée. I. e.:
C'était dur à trouver, mais dans Apache docsils mentionnent l'
withQuote()
méthode qui peut prendrenull
comme une valeur.Nous avons été faire exactement le même message d'erreur et ce (heureusement) fini par résoudre le problème pour nous.