<ul dir="auto">
<li>Neo4j version: 3.3.3-1 installed through yum</li>
<li>Operating system: centos 7</li>
<li>API/Driver: neo4j-admin import</li>
</ul>
<p dir="auto">I'm loading a large (1M+ records with 40 fields) csv file with the following (simplified) command:<br>
neo4j-admin import <br>
--nodes:Organization /path/to/organizations.csv <br>
--multiline-fields=true <br>
--ignore-duplicate-nodes=true <br>
--ignore-missing-nodes=true <br>
--array-delimiter ";"</p>
<p dir="auto">And since a couple of weeks it regularly fails with:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="WARNING Import failed. The store files in /path/to/graph.db are left as they are, although they are likely in an unusable state. Starting a database on these store files will likely fail or observe inconsistent records so start at your own risk or delete the store manually
unexpected error: ERROR in input
  data source: BufferedCharSeeker[source:/path/to/organizations.csv, position:301989889, line:1100684]
  in field: abbreviationFr:string:6
  for header: [vat:ID(Organization), ... , abbreviationFr:string, ...]
  raw field value: ??
  original error: String index out of range: -1"><pre class="notranslate"><code class="notranslate">WARNING Import failed. The store files in /path/to/graph.db are left as they are, although they are likely in an unusable state. Starting a database on these store files will likely fail or observe inconsistent records so start at your own risk or delete the store manually
unexpected error: ERROR in input
  data source: BufferedCharSeeker[source:/path/to/organizations.csv, position:301989889, line:1100684]
  in field: abbreviationFr:string:6
  for header: [vat:ID(Organization), ... , abbreviationFr:string, ...]
  raw field value: ??
  original error: String index out of range: -1
</code></pre></div>
<p dir="auto">This error occurs deterministically in the sense that once it happens it will consistently happen with the same input. However, it may just go away after simply reordering the fields, removing a line or sometimes even a cell. I have tried to isolate the issue by only taking the lines around the line number mentioned in the error as the input but I havent been able to reproduce the error in this way.</p>
<p dir="auto">The csv file itself should be valid csv since it was generated from Spark.</p>
<p dir="auto">Any idea what could be wrong? Did you make any changes to the import in the recent versions? Anything I can do to pinpoint the issue?</p>
<p dir="auto">Thanks in advance,</p>
<p dir="auto">Niek.</p>
<h2 dir="auto">Issue</h2>
<p dir="auto">I am importing CSV files to the empty database via <code class="notranslate">neo4j-admin</code>. It works. Created the DB I need to incrementally update it with data. I create new CSV files and do the <code class="notranslate">incremental</code> import via <code class="notranslate">neo4j-admin</code> and receive the error no matter which run options I try:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Import error: No batch importers found
Caused by:No batch importers found
java.util.NoSuchElementException: No batch importers found
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.lambda$withHighestPriority$1(IncrementalBatchImporterFactory.java:75)
	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.withHighestPriority(IncrementalBatchImporterFactory.java:75)
	at org.neo4j.internal.recordstorage.RecordStorageEngineFactory.incrementalBatchImporter(RecordStorageEngineFactory.java:708)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:215)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:182)
	at org.neo4j.importer.ImportCommand$Base.doExecute(ImportCommand.java:391)
	at org.neo4j.importer.ImportCommand$Incremental.execute(ImportCommand.java:548)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:92)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:37)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
	at picocli.CommandLine.execute(CommandLine.java:2170)
	at org.neo4j.cli.AdminTool.execute(AdminTool.java:94)
	at org.neo4j.cli.AdminTool.main(AdminTool.java:82)

WARNING Import failed. The store files in /data/databases/neo4j are left as they are, although they are likely in an unusable state. Starting a database on these store files will likely fail or observe inconsistent records so start at your own risk or delete the store manually
java.util.NoSuchElementException: No batch importers found
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.lambda$withHighestPriority$1(IncrementalBatchImporterFactory.java:75)
	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.withHighestPriority(IncrementalBatchImporterFactory.java:75)
	at org.neo4j.internal.recordstorage.RecordStorageEngineFactory.incrementalBatchImporter(RecordStorageEngineFactory.java:708)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:215)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:182)
	at org.neo4j.importer.ImportCommand$Base.doExecute(ImportCommand.java:391)
	at org.neo4j.importer.ImportCommand$Incremental.execute(ImportCommand.java:548)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:92)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:37)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
	at picocli.CommandLine.execute(CommandLine.java:2170)
	at org.neo4j.cli.AdminTool.execute(AdminTool.java:94)
	at org.neo4j.cli.AdminTool.main(AdminTool.java:82)"><pre class="notranslate"><code class="notranslate">Import error: No batch importers found
Caused by:No batch importers found
java.util.NoSuchElementException: No batch importers found
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.lambda$withHighestPriority$1(IncrementalBatchImporterFactory.java:75)
	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.withHighestPriority(IncrementalBatchImporterFactory.java:75)
	at org.neo4j.internal.recordstorage.RecordStorageEngineFactory.incrementalBatchImporter(RecordStorageEngineFactory.java:708)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:215)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:182)
	at org.neo4j.importer.ImportCommand$Base.doExecute(ImportCommand.java:391)
	at org.neo4j.importer.ImportCommand$Incremental.execute(ImportCommand.java:548)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:92)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:37)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
	at picocli.CommandLine.execute(CommandLine.java:2170)
	at org.neo4j.cli.AdminTool.execute(AdminTool.java:94)
	at org.neo4j.cli.AdminTool.main(AdminTool.java:82)

WARNING Import failed. The store files in /data/databases/neo4j are left as they are, although they are likely in an unusable state. Starting a database on these store files will likely fail or observe inconsistent records so start at your own risk or delete the store manually
java.util.NoSuchElementException: No batch importers found
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.lambda$withHighestPriority$1(IncrementalBatchImporterFactory.java:75)
	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
	at org.neo4j.internal.batchimport.IncrementalBatchImporterFactory.withHighestPriority(IncrementalBatchImporterFactory.java:75)
	at org.neo4j.internal.recordstorage.RecordStorageEngineFactory.incrementalBatchImporter(RecordStorageEngineFactory.java:708)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:215)
	at org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:182)
	at org.neo4j.importer.ImportCommand$Base.doExecute(ImportCommand.java:391)
	at org.neo4j.importer.ImportCommand$Incremental.execute(ImportCommand.java:548)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:92)
	at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:37)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
	at picocli.CommandLine.execute(CommandLine.java:2170)
	at org.neo4j.cli.AdminTool.execute(AdminTool.java:94)
	at org.neo4j.cli.AdminTool.main(AdminTool.java:82)
</code></pre></div>
<p dir="auto">The simplest command that imports one single node to an already existing DB to get an error on my setup is:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="neo4j-admin database import \
  incremental --force \
  --verbose \
  --skip-duplicate-nodes \
  --skip-bad-relationships \
  --report-file /tmp/import-report.txt \
  --nodes=Address=&quot;/path/to/addresses_headers.csv,/path_to/addresses.txt&quot;
  neo4j"><pre class="notranslate"><code class="notranslate">neo4j-admin database import \
  incremental --force \
  --verbose \
  --skip-duplicate-nodes \
  --skip-bad-relationships \
  --report-file /tmp/import-report.txt \
  --nodes=Address="/path/to/addresses_headers.csv,/path_to/addresses.txt"
  neo4j
</code></pre></div>
<p dir="auto">addresses_headers.csv:<br>
<code class="notranslate">hash:ID(Address)</code></p>
<p dir="auto">addresses.txt:<br>
<code class="notranslate">0x0000000000000000000000000000000000000000</code></p>
<p dir="auto">I tried to stop DB (<code class="notranslate">neo4j-admin server stop</code>) and use flags <code class="notranslate">--stage=all|prepare|build|merge</code>: no effect.</p>
<h3 dir="auto">My setup:</h3>
<ul dir="auto">
<li>Neo4j version: 5.7.0, community edition</li>
<li>Operating system: official docker images of versions 5.7.0 (latest) and 5.6.0</li>
<li>API/Driver: neo4j-admin</li>
</ul>
<h3 dir="auto">Expected behavior</h3>
<p dir="auto">Import address node into an existing database</p>
<h3 dir="auto">Actual behavior</h3>
<p dir="auto">Import command fails with error: <code class="notranslate">java.util.NoSuchElementException: No batch importers found</code></p>
<p dir="auto">PS: Desktop version (installed in the OS, not within the container) behavior is the same.</p>