0

尝试在一个密码查询中从不同的 .csv 文件导入行并创建节点:

// User nodes
LOAD CSV WITH HEADERS
FROM 'file:///profile.csv' AS profile_line
CREATE (user:User { userId: profile_line.User })

// Project nodes
LOAD CSV WITH HEADERS
FROM 'file:///project.csv' AS project_line
CREATE (project:Project { projectId: project_line.projectId })

// Image nodes
LOAD CSV WITH HEADERS
FROM 'file:///media.csv' AS image_line
CREATE (image:Image { imageId: '<imageId>' })

引发以下错误:

“在 CREATE 和 LOAD CSV 之间需要 WITH (第 9 行,第 1 列(偏移量:211))“CREATE (project:Project { projectId: project_line.projectId })”

我不清楚 WITH 语句应该如何构造。

4

1 回答 1

1

如果您使用的是 Neo4j 浏览器,最简单的方法是用分号分隔您的语句并打开“多语句查询编辑器”(当每个语句运行时,它也会为您提供一个不错的小进度指示器) :

在此处输入图像描述

LOAD CSV WITH HEADERS
FROM 'file:///profile.csv' as profile_line
CREATE (user: User { userId: profile_line.User });

LOAD CSV WITH HEADERS
FROM 'file:///project.csv' as project_line
CREATE (project: Project { projectId: project_line.projectId });

LOAD CSV WITH HEADERS
FROM 'file:///media.csv' as image_line
CREATE (image: Image { imageId: image_line.ImageId });

在此处输入图像描述

否则,仍然可以这样做。我们想要的是一个 WITH 语句,该语句将返回一行,而不管之前的 CREATE 最终创建了多少节点,因此任何聚合函数都可以。例如:

LOAD CSV WITH HEADERS
FROM 'file:///profile.csv' as profile_line
CREATE (user: User { userId: profile_line.User })

WITH max(1) as dummy
LOAD CSV WITH HEADERS
FROM 'file:///project.csv' as project_line
CREATE (project: Project { projectId: project_line.projectId })

WITH max(1) as dummy
LOAD CSV WITH HEADERS
FROM 'file:///media.csv' as image_line
CREATE (image: Image { imageId: image_line.ImageId })
Added 9 labels, created 9 nodes, set 9 properties, completed after 17 ms.

虽然我认为这对于未来的你来说非常不清楚,我不会推荐它。

于 2020-02-09T20:20:10.270 回答