在Neo4j加载CSV时非常奇怪的行为

时间:2017-06-14 21:18:07

标签: csv neo4j cypher

我尝试导入的是带有电话呼叫的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),如果我尝试在此服务器上执行任何查询,我也没有得到任何结果。< / p>

如果我跑

再说一遍
match (a) return a
没有任何反应。

我必须恢复生命的唯一方法是停止服务器并重新启动它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

有可能,打开两次大文件会导致问题,因为它主要基于操作系统如何处理大文件。 无论如何,如果你在没有限制5&#39;的情况下意外运行它。然后它可能发生,因为你试图在一个事务中加载26GB。

由于LOAD CSV适用于中型数据集,我建议使用两种解决方案: - 使用neo4j-import工具,或 - 我会尝试将文件拆分为较小的部分,您应该使用定期提交来防止内存不足和挂起,如下所示: 使用周期性委托100000 LOAD CSV FROM ...