在neo4j中从csv import创建关系时遇到问题

时间:2014-08-13 10:57:25

标签: csv neo4j cypher

我使用这样的命令从csv成功创建命名节点:

load csv with headers from "file:/Users/lwyglend/Developer/flavourGroups.csv" as
flavourGroup                
create (fg {name: flavourGroup.flavourGroup}) 
set fg:flavourGroup 
return fg

但是我没有运气使用csv中的load来创建与类似命令的关系:

load csv with headers from "file:/Users/lwyglend/Developer/flavoursByGroup.csv" as
relationship 
match (flavour {name: relationship.flavour}), 
        (flavourGroup {name: relationship.flavourGroup}) 
create flavour-[:BELONGS_TO]->flavourGroup

从一个看起来有点像这样的csv文件:

flavour, flavourGroup
fish, marine
caviar, marine 

没有错误,命令似乎执行,但实际上没有创建任何关系。

如果我在名字上做一个简单的匹配:鱼和名称:海洋然后构建属于鱼和海洋预先存在的节点与密码之间的关系,关系设置好。

从csv导入是否有问题?我的代码错了吗?我玩了几个不同的东西,但作为neo4j的全新内容,你会欣赏任何建议。

2 个答案:

答案 0 :(得分:6)

摆动,

我不确定这是否是您的问题,但我发现如果您的CSV文件中的逗号后面有空格(如您在示例中所示),则它们似乎包含在内字段名称和字段内容。当我制作一个像您展示的CSV文件并尝试加载它时,我发现它失败了。当我取出空间时,我发现它成功了。

作为测试,请尝试以下查询:

LOAD FROM CSV WITH HEADERS FROM "file:/Users/lwyglend/Developer/flavoursByGroup.csv" AS line
RETURN line.flavourGroup

然后尝试此查询:

LOAD FROM CSV WITH HEADERS FROM "file:/Users/lwyglend/Developer/flavoursByGroup.csv" AS line
RETURN line.` flavourGroup`

恩典与和平,

吉姆

答案 1 :(得分:1)

我在回答你的问题时有点迟,但我不认为这些空间本身就是罪魁祸首。在您的示例cypher中,与数据库中的实际节点没有关联,只有名为“relationship”的csv别名。

尝试沿着这条线尝试:

load csv with headers from "file:/Users/lwyglend/Developer/flavoursByGroup.csv" as relationship match (f:flavour), (fg:flavourGroup) where f.name = relationship.flavour and fg.name = relationship.flavourGroup create (f)-[:BELONGS_TO]->(fg)