将 csv 文件导入 neo4j

Importing csv file into neo4j

我正在开始使用 neo4j,但是我在从 csv 文件导入一些数据时遇到了问题。

我的代码如下:

CREATE CONSTRAINT ON (w:word) ASSERT w.stem IS UNIQUE

USING PERIODIC COMMIT 1000
     LOAD CSV WITH HEADERS FROM "file:/home/quentin/.pfe/short_abstracts_fr0.csv" AS row
     MATCH (a:article {title: row.article})
     MATCH (w:word {stem: row.word})
     MERGE (a)-[r:contains {count:row.count}]->(w)

这不会造成任何错误,但不会导入任何内容。我的 csv 文件位置很好,它的内容如下:

article,word,count
Aux_couleurs_du_Moyen_Âge,accompagné,1
Aux_couleurs_du_Moyen_Âge,auss,1
Aux_couleurs_du_Moyen_Âge,banquet,1

我已经使用 ::

导入了 2 个类似的 csv 文件
   USING PERIODIC COMMIT 1000
     LOAD CSV WITH HEADERS FROM "file:/home/quentin/.pfe/category_relations_csv" AS row
     MATCH (a:article {title: row.article})
     MATCH (cat:category {label: row.categorie})
     MERGE (a)-[:is_under]->(cat)

    MATCH (c0:category {label: row.cat0})
     MATCH (c1:category {label: row.cat1})
     MERGE (c0)-[r:relates {type:row.link}]->(c1)"

如果有人知道它有什么问题。

您确认它匹配 aw 了吗?如果未找到 aw 之一或两者,则您的 MERGE 语句将不会创建任何内容。尝试输出结果,而不是尝试 MERGE。 例如

LOAD CSV WITH HEADERS FROM "file:/home/quentin/.pfe/short_abstracts_fr0.csv" AS row
MATCH (a:article {title: row.article}), (w:word {stem: row.word})  
RETURN a.article, w.word 

如果您知道它们还不存在,那么您可以省略 MATCH 子句。

例如

CREATE CONSTRAINT ON (w:word) ASSERT w.stem IS UNIQUE

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:/home/quentin/.pfe/short_abstracts_fr0.csv" AS row
MERGE (a:article {title: row.article})-[r:contains {count:row.count}]->(w:word {stem: row.word})

同样,如果您希望模式的一端已经存在,则只包含一个 MATCH 子句。从您的查询和添加的约束来看,您可能希望创建带有 :Word 标签的节点。如果是这样,您的查询可能如下所示。

CREATE CONSTRAINT ON (w:word) ASSERT w.stem IS UNIQUE

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:/home/quentin/.pfe/short_abstracts_fr0.csv" AS row
MATCH (a:article {title: row.article})
MERGE (a)-[r:contains {count:row.count}]->(w:word {stem: row.word})

但是,最好先创建节点,然后再创建关系模式。希望这对您有所帮助!

我想我在安装 Neo4j 的过程中遇到了问题,因为在我卸载并重新安装它之后,我的导入终于成功了。