UncheckedIOException bei CSV-Import

Hallo zusammen,

seit dem letzten Update auf Version 0.67.1 funktioniert bei mir der CSV upload nicht mehr. Ich gelange zwar zum Fenster, in dem ich die CSV Datei auswählen kann. Nach dem Auswählen und Bestätigen passiert allerdings gar nichts mehr.

Mein Betriebssystem ist macOS Big Sur Version 11.7.10. (Update leider nicht mehr möglich)

Im Fehlerprotokoll sieht das folgendermaßen aus:

Thu Jan 18 21:20:29 CET 2024
Command 'name.abuchen.portfolio.ui.command.import' failed

org.eclipse.core.commands.ExecutionException: Error executing 'name.abuchen.portfolio.ui.command.import': java.io.UncheckedIOException: IOException reading next record: java.io.IOException: (line 1) invalid char between encapsulated token and delimiter
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:179)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:438)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:449)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.lambda$2(AbstractContributionItem.java:475)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4645)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4412)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3988)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:168)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1459)
Caused by: org.eclipse.e4.core.di.InjectionException: java.io.UncheckedIOException: IOException reading next record: java.io.IOException: (line 1) invalid char between encapsulated token and delimiter
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:298)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:232)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
	... 31 more
Caused by: java.io.UncheckedIOException: IOException reading next record: java.io.IOException: (line 1) invalid char between encapsulated token and delimiter
	at org.apache.commons.csv.CSVParser$CSVRecordIterator.getNextRecord(CSVParser.java:150)
	at org.apache.commons.csv.CSVParser$CSVRecordIterator.hasNext(CSVParser.java:160)
	at name.abuchen.portfolio.datatransfer.csv.CSVImporter.processStream(CSVImporter.java:820)
	at name.abuchen.portfolio.datatransfer.csv.CSVImporter.processFile(CSVImporter.java:877)
	at name.abuchen.portfolio.ui.wizards.datatransfer.CSVImportDefinitionPage.doProcessFile(CSVImportDefinitionPage.java:534)
	at name.abuchen.portfolio.ui.wizards.datatransfer.CSVImportDefinitionPage.doProcessFile(CSVImportDefinitionPage.java:527)
	at name.abuchen.portfolio.ui.wizards.datatransfer.CSVImportDefinitionPage.createControl(CSVImportDefinitionPage.java:304)
	at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:180)
	at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:744)
	at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:636)
	at org.eclipse.jface.window.Window.create(Window.java:431)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1094)
	at org.eclipse.jface.window.Window.open(Window.java:788)
	at name.abuchen.portfolio.ui.handlers.ImportCSVHandler.runImport(ImportCSVHandler.java:107)
	at name.abuchen.portfolio.ui.handlers.ImportCSVHandler.lambda$0(ImportCSVHandler.java:49)
	at java.base/java.util.Optional.ifPresent(Unknown Source)
	at name.abuchen.portfolio.ui.handlers.ImportCSVHandler.execute(ImportCSVHandler.java:49)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	... 35 more
Caused by: java.io.IOException: (line 1) invalid char between encapsulated token and delimiter
	at org.apache.commons.csv.Lexer.parseEncapsulatedToken(Lexer.java:369)
	at org.apache.commons.csv.Lexer.nextToken(Lexer.java:290)
	at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:770)
	at org.apache.commons.csv.CSVParser$CSVRecordIterator.getNextRecord(CSVParser.java:148)
	... 56 more

Vielen Dank für eure Hilfe!

Mhh, eine gleiche Meldung gab es hier auf Englisch:

Hast du eventuell eine ältere Datei, die vorher schon Mal funktioniert hat? Nur um auszuschließen, dass da wirklich kein unerwartetes Zeichen in der CSV ist?

Und hier Buchungen per CSV von CoinTracking.info importieren - #5 by Kursflieger hat es (scheinbar) am falschen Trennzeichen gelegen.

Oh, den englischen Beitrag hatte ich leider nicht gefunden, Pardon.

Ich habe das Problem gerade aber doch lösen können. Allerdings verstehe ich nicht wirklich, warum mein Lösungsweg funktioniert. Normalerweise erstelle ich meine CSV Dateien mit R und importiere sie dann direkt nach PP. Das funktioniert nicht mehr. Wenn ich die CSV Dateien allerdings vor dem Import einmal mit Excel öffne und sie erneut speichere, funktioniert der Import. Beide male handelt es sich um normale csv Dateien, an der Kodierung habe ich nichts geändert…

Naja, danke trotzdem für eure Hilfe!

Ich muss meinen Kommentar wieder revidieren.

Über oben genannten Weg gelange ich zwar einen Schritt weiter bis zum Fenster ‘CSV-Import’. Hier kann man normalerweise unter anderem das Trennzeichen wählen. Allerdings erkennt PP das Trennzeichen nicht und betrachtet alles als eine Spalte. (-> Fehlermeldung: ‘Nicht verknüpfte Pflichtfelder: Wert, Datum’). Entgegen der Fehlermeldung habe ich natürlich die entsprechenden Pflichtfelder angegeben und mit Trennzeichen getrennt. Habe es sowohl mit Semikolon als auch mit Komma als Trennzeichen versucht.

Hat jemand eine Idee, was hier passiert sein könnte?

Hi @Tibe,
die Fehlermeldung bedeutet eigentlich das das KeyFeld Maping gefehlt hat, also die Zuordnung zwischen Spalten Namen und PP-Wert.

Hatte dein CSV eine Spaltenüberschrift und der Haken dafür war gesetzt?
Bist du sicher das Excel nicht die Codierung und/oder die Trennzeichen?

Viele Grüße

Me ocurre el mismo problema, primero da error y no se puede abrir el CSV, realizando primero la operación de guardar el archivo en excel y luelo en PP importo y si funciona pero aun poniendo el separador correcto, no me separa los campos de fecha y codificacion, teniendo en cuenta la cabecera.