使用Virtuoso中的Sql Workbench/J导入带有空数字字段的csv文件

使用Virtuoso中的Sql Workbench/J导入带有空数字字段的csv文件,csv,virtuoso,sql-workbench-j,Csv,Virtuoso,Sql Workbench J,我想使用sqlworkbench/J将csv文件加载到Virtuoso表中。当文件中的数字字段为空时,我会得到一个NullPointerException。 目标表中的空字段有一个可为空的列。错误如下 java.lang.NullPointerException java.lang.NullPointerException at virtuoso.jdbc4.VirtuosoPreparedStatement.setObject(VirtuosoPreparedStatement

我想使用sqlworkbench/J将csv文件加载到Virtuoso表中。当文件中的数字字段为空时,我会得到一个
NullPointerException
。 目标表中的空字段有一个可为空的列。错误如下

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
我的表具有以下结构

CREATE TABLE CLASSIFICATION_CODE 
(
  CLASSIFICATION_CODE_ID NUMERIC NOT NULL ,
  CLASSIFICATION_CATEGORY VARCHAR(1) NOT NULL ,
  CLASSIFICATION_PRIORITY NUMERIC 
  CONSTRAINT PK_CLASS_CODE PRIMARY KEY (CLASSIFICATION_CODE_ID)   
);
我尝试上载的文件包含以下内容(最后一个字段为空)

最后,这是我用来导入它的
WbImport
命令

WbImport -type=text
-file='C:\dev\csvFiles\CLASSIFICATION_CODE.csv'
-delimiter=,
-table=DB.PEST.CLASSIFICATION_CODE
-quoteChar=^
-badfile='C:\dev\csvFiles\rejected'
-emptyStringIsNull=false;
我没有看到任何参数告诉Sql Workbench/J列
CLASSIFICATION\u PRIORITY
的字段可以为空。我错过什么了吗

我正在使用

  • Virtuoso开源版7.2.4.3217-threads(截至2016年4月25日)针对Win64编译(x86_64-generic-win-64)

  • jdk1.8的补丁Virtuoso JDBC驱动程序
    virtjdbc4_2.jar
    位于


该错误是由驱动程序中的错误引起的 同一链接上的驱动程序的当前版本修复了该问题


驱动程序也可以在Virtuoso github存储库中找到。

您没有提供任何版本信息,因此我想知道是否所有组件都是最新的?我会检查Java、Virtuoso的JDBC驱动程序和SQL Workbench/J;可能还值得检查Virtuoso本身,虽然它与报告的错误无关。@Talledted我已经添加了对JDBC驱动程序的引用。事实上,我用了谢尔盖4周前补好的那个。也许现在它也可以在存储库中使用了,我不确定。好吧,那么Virtuoso是最新的Windows稳定VOS版本,我想您使用的是Java 8(可能是最新和最好的)。那么SQL Workbench/J呢,这可能是罪魁祸首?最后,我猜您直接与Sergey合作,获得了预发布的JDBC驱动程序。在这个问题上,或许也值得做同样的事情!
WbImport -type=text
-file='C:\dev\csvFiles\CLASSIFICATION_CODE.csv'
-delimiter=,
-table=DB.PEST.CLASSIFICATION_CODE
-quoteChar=^
-badfile='C:\dev\csvFiles\rejected'
-emptyStringIsNull=false;