使用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)
答案 0 :(得分:1)
看起来像一个被遗忘的最终报价的案例。你是用--multiline-fields
运行的吗?当多行字段(即跨越多行的字段)在那里时,CSV解析器很难确定某个字段是否有遗忘的结尾引用。
如果您知道您的值不会有换行符,请尝试运行w {o --multiline-fields
。