2017-02-21 2 views
0

Ich brauche CSV-Datei zu analysieren, die wie unten mehrzeiligen String zitiert enthalten:Parse CSV mit zitierte mehrzeiligen String

ID;Name;Password;address; phoneNum  
1; "userName"; "userPassword"; "user \n 
    address"; 1234523423 

ich durch Commons CSV Bibliothek Funktionalität geachtet, die die Mehrzahl der Anforderungen gerecht zu werden scheint, aber es doesn Es scheint keine Option zu geben, die nächste Zeile zu lesen, falls die Anführungszeichen nicht geschlossen sind.

Offensichtlich sollte ein einfaches Anführungszeichen mit einem doppelten Anführungszeichen versehen werden.

+1

IMHO sollte das niemals eine _option_ sein. So ist CSV _supposed_, um analysiert zu werden. – Joey

+2

Die [Tests] (https://github.com/apache/commons-csv/blob/master/src/test/java/org/apache/commons/csv/CSVParserTest.java#L68-L70) scheinen dies zu vermuten das funktioniert out of the box (wie es sollte). – Joey

Antwort

1

Es sollte gut funktionieren, es sei denn, es gibt einen Fehler in der Bibliothek oder Fehlkonfiguration. Es kann jedoch vorkommen, dass Ihr Passwort ein unskapseltes/nicht geschlossenes Feld in Anführungszeichen hat und dieses nicht richtig geschrieben wird.

Wenn das die Situation ist, geben Sie univocity-parsers einen Versuch, wie es many different options behandelt, um unescaped/nicht geschlossene Anführungszeichen richtig zu behandeln. Es ist auch 4 mal schneller als Commons CSV.

Offenlegung: Ich bin der Autor dieser Bibliothek.

+0

Die 1 GB-CSV-Datei wurde sowohl mit nicht verzahnten Anführungszeichen als auch mit mehrzeiligen Werten versehen. Vielen Dank an @ jeronimo-backes für seine [univocity-parsers] (http://www.univocity.com/pages/parsers-tutorial). Kleiner Speicherbedarf, flexible Einstellungen, freundlicher Support. –