Verwenden von Sql Workbench/J Ich möchte eine CSV-Datei in eine Virtuoso-Tabelle laden. Ich bekomme eine NullPointerException
, wenn in der Datei ein numerisches Feld leer ist. Die Zieltabelle enthält eine Nullwert-Spalte für die leeren Felder. Der Fehler ist der folgende.Import mit Sql Workbench/J in Virtuoso eine CSV-Datei mit leeren numerischen Feldern
java.lang.NullPointerException
java.lang.NullPointerException
at virtuoso.jdbc4.VirtuosoPreparedStatement.setObject(VirtuosoPreparedStatement.java:846)
at virtuoso.jdbc4.VirtuosoPreparedStatement.setObject(VirtuosoPreparedStatement.java:789)
at virtuoso.jdbc4.VirtuosoPreparedStatement.setObject(VirtuosoPreparedStatement.java:773)
at workbench.db.compare.BatchedStatement.setObject(BatchedStatement.java:120)
at workbench.db.importer.DataImporter.processRowData(DataImporter.java:1368)
at workbench.db.importer.DataImporter.insertRow(DataImporter.java:1297)
at workbench.db.importer.DataImporter.processRow(DataImporter.java:1054)
at workbench.db.importer.TextFileParser.processOneFile(TextFileParser.java:743)
at workbench.db.importer.AbstractImportFileParser.start(AbstractImportFileParser.java:390)
at workbench.db.importer.DataImporter.startImport(DataImporter.java:761)
at workbench.sql.wbcommands.WbImport.execute(WbImport.java:827)
at workbench.sql.StatementRunner.runStatement(StatementRunner.java:582)
at workbench.sql.BatchRunner.executeScript(BatchRunner.java:877)
at workbench.sql.BatchRunner.executeScript(BatchRunner.java:784)
at workbench.sql.BatchRunner.runFiles(BatchRunner.java:642)
at workbench.sql.BatchRunner.execute(BatchRunner.java:596)
at workbench.WbManager.runBatch(WbManager.java:1075)
at workbench.WbManager.startApplication(WbManager.java:929)
at workbench.WbManager.main(WbManager.java:1227)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at workbench.WbStarter.main(WbStarter.java:143)
Importing file 'C:\dev\csvFiles\CLASSIFICATION_CODE.csv' into table CLASSIFICATION_CODE
The file "C:\dev\csvFiles\CLASSIFICATION_CODE.csv" was not imported
Meine Tabelle hat die folgende Struktur.
Die Datei, die ich hochladen möchte, hat den folgenden Inhalt (das letzte Feld ist leer).
CLASSIFICATION_CODE_ID,CLASSIFICATION_CATEGORY,CLASSIFICATION_PRIORITY
1,^3^,
2,^2^,
3,^2^,
4,^2^,
5,^2^,
6,^3^,
Schließlich ist dies der WbImport
Befehl, den ich es importieren verwenden.
WbImport -type=text
-file='C:\dev\csvFiles\CLASSIFICATION_CODE.csv'
-delimiter=,
-table=DB.PEST.CLASSIFICATION_CODE
-quoteChar=^
-badfile='C:\dev\csvFiles\rejected'
-emptyStringIsNull=false;
Ich sehe kein Parameter zu SQL Workbench/J zu sagen, dass das Feld für die Spalte CLASSIFICATION_PRIORITY
null sein kann. Fehle ich etwas?
ich
bin mitVirtuoso Open Source Edition Version 7.2.4.3217-Themen ab 25. April 2016 Zusammengestellt für Win64 (x86_64-generic-win-64)
die gepatchte Virtuoso JDBC Treiber
virtjdbc4_2.jar
für jdk1.8 befindet sich this link.
Sie haben keine Versionsinformationen zur Verfügung gestellt, also frage ich mich, ob alle Komponenten auf dem neuesten Stand sind? Ich würde Java, den JDBC-Treiber für Virtuoso und SQL Workbench/J überprüfen; möglicherweise lohnt es sich auch, Virtuoso selbst zu überprüfen, dachte, es sei nicht in den gemeldeten Fehler verwickelt. – TallTed
@TallTed Ich habe den Verweis auf den JDBC-Treiber hinzugefügt. Eigentlich habe ich den von Sergey vor 4 Wochen gepatcht. Vielleicht ist es jetzt auch im Repository verfügbar, ich bin mir nicht sicher. – Bepi
OK, Virtuoso ist das neueste stabile VOS-Release für Windows, und ich nehme an, Sie verwenden Java 8 (vermutlich das Neueste und Größte). Was ist mit * SQL Workbench/J *, was * kann * der Schuldige hier sein? Zuletzt haben Sie wahrscheinlich direkt mit Sergey zusammengearbeitet, um den JDBC-Treiber vor der Veröffentlichung zu erhalten. Es lohnt sich wahrscheinlich, dasselbe über dieses Thema zu tun! – TallTed