我使用这样的命令从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的全新内容,你会欣赏任何建议。
答案 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)