22. Februar 2018 13:37
Hallo zusammen,
Ich habe folgendes Problem. Aus einer Fremdanwendung erhalte ich eine Textdatei mit folgendem exemplarischen Aufbau:
01.01.2018,"Meier, Hans",01.01.2019
01.01.2018,"Müller, Hans",01.01.2019
Zur Einlesung möchte ich eigentlich die Datenaustauschdefinitionen (variabler Text, Komma getrennt) verwenden. Grundsätzlich funktioniert das auch sehr gut, aber ...
NAV erkennt nicht, dass das Komma zwischen Nach- und Vorname kein Feldseparator ist und bricht mit dem Fehler ab, dass "Hans" kein Datum ist
Irgendwie müsste ich da vermutlich einen Parser davorschalten, der mir den Text zwischen den Anführungszeichen gesondert extrahiert. Wie kriege ich den so etwas am elegantesten hin?
22. Februar 2018 14:53
Ist das ein einmaliger/manueller Import oder muss die automatisch verarbeitet werden?
Für einen manuellen könnte man die Importfunktionen von Excel nutzten, damit die Datei einlesen und dann direkt wieder als CSV abspeichern. Dann hat man ; als Trennzeichen. Falls das Semikolon nicht in den Feldern vorkommt, hat man dann keine Probleme mehr.
22. Februar 2018 14:58
Kowa hat geschrieben:Ist das ein einmaliger/manueller Import oder muss die automatisch verarbeitet werden?
Für einen manuellen könnte man die Importfunktionen von Excel nutzten, damit die Datei einlesen und dann direkt wieder als CSV abspeichern. Dann hat man ; als Trennzeichen. Falls das nicht in den Feldern vorkommt, hat man dann keine Probleme mehr.
Nein, leider nicht. Soll mehrmals im Monat vom Anwender gemacht werden. Somit funktioniert der "Umweg" über Excel leider nicht bzw. ist nicht praktikabel.
22. Februar 2018 15:21
Bitte keine Vollzitate!Alternativ kann man auch mit PowerShell vorher das Trennzeichen ändern. Das Skript muss der Anwender natürlich ausführen dürfen. Das erzeugt eine neue Datei mit Semikolon als Trennzeichen.
Hier für UTF-8-Dateien, Pfade und Encoding ggf. anpassen
- Code:
Import-Csv -Delimiter "," -Path C:\temp\importdatei.txt -Encoding UTF8|Export-Csv -Delimiter ";" -Path C:\temp\importdatei2.txt -NoTypeInformation -Encoding UTF8
22. Februar 2018 15:31
Kowa hat geschrieben:Alternativ kann man auch mit PowerShell vorher das Trennzeichen ändern.
Noch besser natürlich: dafür sorgen dass in den Feldinhalten das Trennzeichen nicht erst enthalten ist. Also praktisch an der Quelle.
22. Februar 2018 15:36
Hallo,
wenn du dich ein wenig mit NAV- Programmierung auskennst, könntest du es damit
http://www.msdynamics.de/viewtopic.php?f=74&t=34117#p128545 probieren. Du müsstest nur die Split- Funktion etwas intelligenter machen.
Gruß Fiddi
22. Februar 2018 16:14
Markus Merkl hat geschrieben:Noch besser natürlich: dafür sorgen dass in den Feldinhalten das Trennzeichen nicht erst enthalten ist. Also praktisch an der Quelle.
Das, was da kommt, ist leider für CSV von der
Internet Engineering Task Force durchaus mal so locker definiert worden, wenn auch nicht empfehlenswert.
http://www.ietf.org/rfc/rfc4180.txt