Neo4j导入错误:尝试读取大于有效缓冲区大小

时间:2016-01-06 16:12:53

标签: neo4j

使用Neo4j 2.3.1 Community Edition并尝试使用Neo4jImport.bat导入约1900万个节点。

不幸的是,导入失败了,Neo4j没有告诉我它失败时尝试读取的行号。

我正在使用--stacktrace参数,但我得到的只是下面的堆栈跟踪。

有没有其他方法可以从导入器中取出行号?

编辑:

CSV文件如下所示:

:ID(Item),id:int,name:string,:LABEL
1,1,"universe",Item
8,8,"happiness",Item

它自动生成,因此缺少结束引用的可能性相当小。数据中的引号将使用\进行转义 - 其中可能还有其他特殊字符,但文件是utf8编码的。仍然,进口商应该能够告诉它开始读取错误数据的行号。

命令行:

" C:\ Program Files \ Neo4j Community \ bin \ Neo4jImport.bat" --input-encoding UTF8 --stacktrace --into E:\ data.graphdb --nodes items.csv

导入错误:尝试读入大于有效缓冲区大小4194304的值 引起:尝试读入大于有效缓冲区大小4194304的值 java.lang.IllegalStateException:尝试读入大于有效缓冲区大小4194304的值         at org.neo4j.csv.reader.BufferedCharSeeker.fillBufferIfWeHaveExhaustedIt(BufferedCharSeeker.java:267)         在org.neo4j.csv.reader.BufferedCharSeeker.nextChar(BufferedCharSeeker.java:240)         在org.neo4j.csv.reader.BufferedCharSeeker.seek(BufferedCharSeeker.java:97)         at org.neo4j.unsafe.impl.batchimport.input.csv.DataFactories $ AbstractDefaultFileHeaderParser.create(DataFactories.java:268)         at org.neo4j.unsafe.impl.batchimport.input.csv.InputGroupsDeserializer.createNestedIterator(InputGroupsDeserializer.java:67)         at org.neo4j.unsafe.impl.batchimport.input.csv.InputGroupsDeserializer.createNestedIterator(InputGroupsDeserializer.java:35)         at org.neo4j.helpers.collection.NestingIterator.fetchNextOrNull(NestingIterator.java:67)         在org.neo4j.helpers.collection.PrefetchingIterator.peek(PrefetchingIterator.java:60)         at org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:46)         在org.neo4j.unsafe.impl.batchimport.staging.IteratorBatcherStep.nextBatchOrNull(IteratorBatcherStep.java:45)         at org.neo4j.unsafe.impl.batchimport.InputIteratorBatcherStep.nextBatchOrNull(InputIteratorBatcherStep.java:41)         在org.neo4j.unsafe.impl.batchimport.staging.ProducerStep.process(ProducerStep.java:74)         在org.neo4j.unsafe.impl.batchimport.staging.ProducerStep $ 1.run(ProducerStep.java:54)

1 个答案:

答案 0 :(得分:1)

看起来像一个被遗忘的最终报价的案例。你是用--multiline-fields运行的吗?当多行字段(即跨越多行的字段)在那里时,CSV解析器很难确定某个字段是否有遗忘的结尾引用。

如果您知道您的值不会有换行符,请尝试运行w {o --multiline-fields