2017-06-14 38 views
0

我想導入的是一個帶有電話呼叫的CSV文件,並將它表示爲節點中的電話號碼,並將每個電話號碼錶示爲一個箭頭。 該文件由管道分隔。Neo4j非常奇怪的行爲加載CSV

我已經嘗試了第一版本:

load csv from 'file:///com.csv' as line FIELDTERMINATOR '|' 
with line 
    merge (a:line {number:COALESCE(line[1],"")}) 
return line 
limit 5 

和預期一樣,則一個節點(呼出號碼)爲每個行創建的。

在此之後,我可以考什麼,我用一個簡單的

Match (a) return a 

所以我嘗試了下面的步驟是創建呼叫的第二個節點(接收器)

load csv from 'file:///com.csv' as line FIELDTERMINATOR '|' 
with line 
    merge (a:line {number:COALESCE(line[1],"")}) 
    merge (b:line {number:COALESCE(line[2],"")}) 
return line 
limit 5 

完成運行此代碼後,我收到沒有答案(我正在使用localhost:7474/broser的瀏覽器GUI),如果我嘗試在此服務器上執行任何查詢,我也沒有得到任何結果。

所以,再一次,如果我跑

match (a) return a 

沒有任何反應。

我必須恢復生機的唯一方法是停止服務器並重新啓動它。

任何想法?

+0

您正在運行哪個版本的Neo4j? – InverseFalcon

+0

請向我們展示您的CSV文件樣本。 –

+0

版本是: 版\t 「社區」 版本\t 「3.2.0」 – Qsebas

回答

0

這是可能的,因爲它在很大程度上基於業務系統如何處理大文件的打開那個大文件兩次會造成問題。 無論如何,如果你不小心運行它而沒有'limit 5'子句,那麼它可能會發生,因爲你試圖在單個事務中加載26GB。

由於LOAD CSV是中型數據集,我建議兩種解決方案: - 使用Neo4j的導入工具,或 - 我想嘗試分割文件以更小的部分,你應該使用定期提交防止內存不足的情況並掛起,如下所示: 使用定期提交100000 LOAD CSV FROM ...