Open edigonzales opened 6 years ago
ByteOrderMark-Problematik: Das erste Header-Attribut hat ein erstes unsichtbares Zeichen. Die Länge für stop_id
ist 8 anstatt 7 und findet dann stop_id
aus der DB-Tabelle nicht. Anscheinend "beliebtes" Problem (erstes Zeichen eines UTF-8-Files, das in Java geöffnet wird).
Wenn ich im CsvReader in der while-Schleife der Methode readValues
die Character mit den int-Wert 65279 ignoriere, funktioniert es.
if (readChar == 65279) {
continue;
}
Ist die Datei wirklich in UTF-8 codiert (nicht eher UTF-16)? (Bei UTF-8 macht ein BOM m.E. keinen Sinn...)
Unzippen auf macOS.
stefan@Panajachel:~/Downloads/gtfsfp20172017-07-18_1$ file stops.txt
stops.txt: UTF-8 Unicode (with BOM) text, with CRLF line terminators
Ob das wirklich stimmt, was file
liefert, weiss ich nicht so richtig. Jedenfalls passt das zum Gesamtbild.
BOM in UTF-8 (Bytefolge 0xFEFF) ist zulässig. Muss (wenn vorhanden) überlesen werden.
fixed in iox-ili
Funktioniert bei mir mit iox-ili-1.20.4 noch immer nicht mit angehängtem File.
Test-Code im Anhang liefert für iomObj.getattrvalue("stop_id")
null
zurück.
22:16:20.464 [ERROR] [ch.so.agi.gretl.tasks.CsvImport] failed to run CvsImport
ch.interlis.iox.IoxException: org.postgresql.util.PSQLException: ERROR: null value in column "stop_id" violates not-null constraint
Detail: Failing row contains (null, Weissenhorn Eschach, 48.3010036099201, 10.135089480891, null, null).
at ch.interlis.ioxwkf.dbtools.AbstractImport2db.importData(AbstractImport2db.java:155)
Beispiel ist beigelegt. Selber gebuildetes gretl-1.0.4-SNAPSHOT.
attrValue
istnull
: https://github.com/claeis/iox-wkf/blob/master/src/main/java/ch/interlis/ioxwkf/dbtools/AbstractImport2db.java#L244Archive.zip