Импортируйте с помощью Sql Workbench/J в Virtuoso CSV-файл с пустыми числовыми полями

Используя Sql Workbench/J I, я хочу загрузить 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)   
);

Файл, который я пытаюсь загрузить, имеет следующий контент (последнее поле пусто).

CLASSIFICATION_CODE_ID,CLASSIFICATION_CATEGORY,CLASSIFICATION_PRIORITY
1,^3^,
2,^2^,
3,^2^,
4,^2^,
5,^2^,
6,^3^,

Наконец это 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_PRIORITYможет быть нулевым Я что-то пропустил?

я использую

  • Virtuoso Open Source Edition Версия 7.2.4.3217-потоки по состоянию на 25 апреля 2016 г. Скомпилировано для Win64 (x86_64-generic-win-64)

  • исправленный драйвер Virtuoso JDBC virtjdbc4_2.jar для jdk1.8 находится по этой ссылке.

1 ответ

Ошибка вызвана ошибкой в ​​драйвере virtjdbc4_2.jar Текущая версия драйвера по той же ссылке решает проблему.

Драйвер также можно найти в хранилище Virtuoso github.

Другие вопросы по тегам