2016-01-06 36 views
1

使用Neo4j 2.3.1 Community Edition並嘗試使用Neo4jImport.bat導入約1900萬個節點。Neo4j導入錯誤:嘗試讀取大於有效緩衝區大小的值

不幸的是,導入失敗,Neo4j不告訴我它失敗時嘗試讀取哪個行號。

我正在使用--stacktrace參數,但我得到的是下面的堆棧跟蹤。

有沒有其他辦法可以從進口商處取出一行號碼?

編輯:

的CSV文件看起來是這樣的:

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

它自動生成的,所以缺少結束引號的概率是相當小的。數據中的引號將用\轉義 - - 其中可能還有其他特殊字符,但該文件是utf8編碼的。不過進口商應該能夠知道它開始讀取錯誤數據的行號。

命令行:

「C:\ Program Files文件\的Neo4j社區\ BIN \ Neo4jImport.bat」 --input編碼UTF8 --stacktrace --into E:\ data.graphdb --nodes項目的.csv

導入錯誤:試圖在比致有效的緩衝大小4194304 大的值如下:試圖在比有效的緩衝大小的值來讀取4194304 java.lang.IllegalStateException:試過在一個值讀取大於有效緩衝區大小4194304 at org.neo4j.csv.reader.BufferedCharSeeker.fillBufferIfWeHaveExhaustedIt(BufferedCharSeeker.java:267) at org.neo4j.csv.reader.BufferedCharSeeker.nextChar(BufferedCharSeeker.java:240) at org.neo4j.csv.reader.BufferedCharSeeker.seek(BufferedCharSeeker.java:97) at org.neo4j.unsafe.impl。 batchgport.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) at org.neo4j.helpers.collection。 PrefetchingIterator.peek(PrefetchingIterator.java:60) at org.neo4j.helpers.collection.PrefetchingIterat or.hasNext(PrefetchingIterator.java:46) 在org.neo4j.unsafe.impl.batchimport.staging.IteratorBatcherStep.nextBatchOrNull(IteratorBatcherStep.java:45) 在org.neo4j.unsafe.impl.batchimport.InputIteratorBatcherStep.nextBatchOrNull( InputIteratorBatcherStep.java:41) at org.neo4j.unsafe.impl.batchimport.staging.ProducerStep.process(ProducerStep.java:74) at org.neo4j.unsafe.impl.batchimport.staging.ProducerStep $ 1.run(ProducerStep .java:54)

+0

您可以分享一些關於您嘗試導入的CSV文件的大小和結構的更多詳細信息嗎?你調用的命令行是什麼? –

+0

共享細節。謝謝你提醒我。 –

回答

1

看起來像一個被遺忘的結束引用的情況。你是用--multiline-fields運行這個嗎?當多行字段(即跨越多行的字段)存在時,CSV解析器很難確定字段是否有遺忘結束引號。

因此,如果您知道您的值不會有換行符,請嘗試運行W/O --multiline-fields

+0

我正在運行它沒有多行字段。即使我正在使用多行字段,解析器仍然應該能夠分辨出哪些行開始出現故障;) –

+0

除了提到有關問題起點的信息外,這聽起來像是一個很好的補充。 –

+0

是的,請!這將使查找問題變得如此簡單。 –