neo4j 为什么LOAD WITH HEADERS语句只导入数据集的第一行?

igetnqfo  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(126)

我正在尝试一个项目,我必须将一个数据集导入到neo4j中。在尝试使用LOAD CSV WITH HEADERS语句后,我注意到它只从我的文件中导入了第一行。意识到这一点后,我尝试使用apoc插件运行CALL apoc.periodic.iterate,因为我的数据集有16719行,它需要能够等待每一行被调用,这样它就不会失败。

apoc.周期性.迭代尝试:

CALL apoc.periodic.iterate
(
    "LOAD CSV WITH HEADERS FROM 'file:///Video_Games_Sales_as_at_22_Dec_2016.csv' as row
    WITH row
    RETURN row",

    "MERGE (g:Game)
    ON CREATE SET g.Name = row.Name,
        g.Release = row.Release,
        g.NASales = row.NASales,
        g.EUSales = row.EUSales,
        g.JPSales = row.JPSales,
        g.OtherSales = row.OtherSales,
        g.GlobalSales = row.GlobalSales  

    MERGE (p:Platform)
    ON CREATE SET p.Name = row.Platform

    MERGE (c:Genre)
    ON CREATE SET c.Type = row.Genre

    MERGE (v:Publisher)
    ON CREATE SET v.Name = row.Publisher

    MERGE (x:Developer)
    ON CREATE SET x.Name = row.Developer

    MERGE (r:Rating)
    ON CREATE SET r.Rating = row.Rating

    MERGE (g)-[:ON_PLATFORM]-(p)
    MERGE (g)-[:GENRE]-(c)
    MERGE (g)-[:PUBLISHEDBY]-(v)
    MERGE (g)-[:DEVELOPEDBY]-(x)
    MERGE (g)-[:RATED]-(r)",

    {batchSize: 10000, iterateList: true}
)
YIELD batches, total 
RETURN batches, total;

即使运行了这个新语句,它也只导入了第一行和所有关系。为了找出我做错了什么,我想知道是否有人遇到过类似的问题?话虽如此,如果你看到我在哪里搞砸了,请给我指出正确的方向。

huus2vyu

huus2vyu1#

这可能与你做的事情有关

MERGE (g:Game)

这可能每次都重写相同的节点。
通常你会的

MERGE (g:Game {Name: row.Name})

假设Name是标识属性。
此外,请确保为Name属性设置了CONSTRAINT
当然,您正在使用的所有其他节点类型也是如此。

相关问题