我使用这样的命令从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 回答
摆动,
我不确定这是否是您的问题,但我发现如果CSV文件中的逗号后面有空格(如您在示例中所示),它们似乎包含在字段名称和字段中内容 . 当我制作一个像您展示的CSV文件并尝试加载它时,我发现它失败了 . 当我取出空间时,我发现它成功了 .
作为测试,请尝试以下查询:
然后尝试这个查询:
恩典与和平,
吉姆
我回答你的问题有点晚了,但我不认为这些空间本身就是罪魁祸首 . 在您的示例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)