1

通过这个查询,我从我的 csv 文件中导入了 75000 个节点。(类别)

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS 
FROM "file:///prodcategory.csv" AS row 
CREATE (:Category {id: row.idProdCategory, name: row.name, idRestaurant: row.idRestaurant});

通过这个查询,我还从我的 csv 文件(产品)中导入了 100 万个节点

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS 
FROM "file:///products.csv" AS row 
CREATE (:Product {id: row.idProduct, idProductCategory: row.idProductCategory,name: row.name,idRestaurant:row.idRestaurant ,description: row.description, price: row.price, shipping_price: row.shippingPrice});

我正在使用此查询来创建 id -> category 和 idProductCategory -> products 之间的关系。

MATCH (category:Category {id: category.id})
MATCH (Product:Product {idProductCategory: Product.idProductCategory})
WHERE Product.idProductCategory=category.id
MERGE (category)-[:OF_CATEGORY]->(Product);

此查询仅创建 2999 个关系,我不相信我应该创建的 100 万个关系,如果有能够创建超过 100 万个关系的方法或配置,请帮助我,我将非常感激。

4

2 回答 2

4

确保您在Product.idProductCategory.

我假设类别 ID 在类别中是唯一的。

CREATE CONSTRAINT ON (category:Category) ASSERT category.id IS UNIQUE;

我假设有多个产品具有相同的类别 ID。

CREATE INDEX ON :Product(idProductCategory);

然后您可以简单地匹配每个类别,然后为每个类别找到合适的产品并创建关系。

// match all of your categories
MATCH (category:Category)

// then with each category find all the products
WITH category 
MATCH (Product:Product {idProductCategory: category.id })

// and then create the 
MERGE (category)-[:OF_CATEGORY]->(Product);

如果您遇到内存限制,您可以使用 APOC 定期提交来包装您的查询...

call apoc.periodic.commit("
  MATCH (category:Category)
  WITH category 
  MATCH (Product:Product {idProductCategory: category.id })
  MERGE (category)-[:OF_CATEGORY]->(Product)
",{limit:10000})
于 2017-07-10T21:56:28.153 回答
1

尝试将您的查询更改为此...您在查询中使用了太多过滤器

检查文档以获取 MATCH

MATCH (category:Category),(Product:Product)
WHERE Product.idProductCategory=category.id
MERGE (category)-[:OF_CATEGORY]->(Product)

您也可以只更改您的第二个导入查询,因此您不需要单独的链接查询。

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS 
FROM "file:///products.csv" AS row 
CREATE (p:Product {id: row.idProduct, name: row.name,idRestaurant:row.idRestaurant ,description: row.description, price: row.price, shipping_price: row.shippingPrice})
MATCH (c:Category{id:row.idProductCategory}
MERGE (p)-[:OF_CATEGORY]->(c)
于 2017-07-10T21:54:11.387 回答