将csv文件导入neo4j

时间:2015-03-10 16:42:51

标签: 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)"

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

2 个答案:

答案 0 :(得分:1)

您确认它与aw匹配吗?如果找不到aw中的一个或两个,那么您的MERGE语句将不会创建任何内容。尝试输出结果,而不是尝试MERGE。 e.g。

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条款。

e.g。

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})

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

答案 1 :(得分:0)

我认为在安装Neo4j时遇到了问题,因为在我卸载并重新安装后,我的导入终于有效了。