2016-10-11 2 views
0

ich brauche das erste Datum aus der folgenden Zeichenkette in einem Talend Open Studio Job zu analysieren:Parsing Datum mit Talend Open Studio wirft einen Fehler

Report für Benutzerdefiniert Von: 11.10.2016 01:00:00 Bis: 12.10.2016 01:00:00

i bauen den folgenden Ausdruck, die in tjavarow Komponente verwendet wird, das Datum als global var zu setzen:

output_row.Datum = TalendDate.parseDate("dd.MM.yyyy",StringHandling.LEFT(String‌​Handling.FTRIM(Strin‌​gHandling.EREPLACE(i‌​nput_row.Column0,"Re‌​port für Benutzerdefiniert Von: ","")),11)); 
globalMap.put("datum",output_row.Datum); 

aber ich diesen Fehler nur erhalten:

Exception in component tJavaRow_2 
java.lang.RuntimeException: java.text.ParseException: Unparseable date: "11.10.2016" 
    at routines.TalendDate.parseDate(TalendDate.java:895) 
    at routines.TalendDate.parseDate(TalendDate.java:839) 
    at ec_bi.xxxx_logintimes_csv_to_db_0_1.xxxx_LoginTImes_CSV_to_DB.tFileInputDelimited_3Process(xxxx_LoginTImes_CSV_to_DB.java:3184) 
    at ec_bi.xxxx_logintimes_csv_to_db_0_1.xxxx_LoginTImes_CSV_to_DB.tJavaRow_1_error(xxxx_LoginTImes_CSV_to_DB.java:412) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at ec_bi.xxxx_logintimes_csv_to_db_0_1.xxxx_LoginTImes_CSV_to_DB$TalendException.printStackTrace(xxxx_LoginTImes_CSV_to_DB.java:355) 
    at ec_bi.xxxx_logintimes_csv_to_db_0_1.xxxx_LoginTImes_CSV_to_DB.runJobInTOS(xxxx_LoginTImes_CSV_to_DB.java:10195) 
    at xxx.xxxxxx_csv_to_db_0_1.xxxx_LoginTImes_CSV_to_DB.main(xxxx_xxxxx_CSV_to_DB.java:9946) 
Caused by: java.text.ParseException: Unparseable date: "11.10.2016" 
    at java.text.DateFormat.parse(DateFormat.java:366) 
    at routines.TalendDate.parseDate(TalendDate.java:881) 
    ... 10 more 

, was ist falsch mit meiner Parse-Datum TalendDate.parseDate("dd.MM.yyyy",...)

dankenswerterweise

christian

Antwort

1

das Problem war ein unsichtbares Zeichen.

Es funktioniert gut mit:

output_row.datum = TalendDate.parseDate("dd.MM.yyyy",StringHandling.TRIM(StringHandling.RIGHT(StringHandling.LEFT(StringHandling.EREPLACE(input_row.Column0,"Report für Benutzerdefiniert Von: ",""),11),10))); 

Sie können sehen, wie ich hier herausgefunden: https://www.talendforge.org/forum/viewtopic.php?pid=193560#p193560

aber lassen Sie mich wissen, ob es mehr glaceful Lösung ist :)

0

Parenthesis Zahl könnte falsch sein: In der ersten Zeile gibt es eine ')' zu viel, 2 weitere in der zweiten Zeile. Außerdem sollte in einer tJavaRow die Zeile als "input_row.Column0" und nicht als "row5.Column0" benannt werden. Wenn Sie "row5" verwenden möchten, sollten Sie versuchen, diesen Ausdruck in ein tMap

+0

leider war eine Kopie/vergangener Fehler - Ich korrigiere beide zu output_row.Datum = TalendDate.parseDate ("dd.MM.yyyy", StringHandling.LEFT (StringHandling.FTRIM (StringHandling.EREPLACE (input_row.Column0, "Bericht für Benutzerdefiniert Von:", " ")), 11)); globalMap.put ("Datum", output_row.Datum); aber gleichen Fehler erhalten – chnet

Verwandte Themen