我正在使用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)"
如果有人知道它有什么问题。
答案 0 :(得分:1)
您确认它与a
和w
匹配吗?如果找不到a
和w
中的一个或两个,那么您的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时遇到了问题,因为在我卸载并重新安装后,我的导入终于有效了。