[英]Importing CSV While Creating Relationship In Neo4j
我正在尝试使用CSV文件中的信息在两个不同的图形之间创建关系。 我以这种方式构建查询,因为每个图的大小(一个为500k +,另一个为1.5m +)。
这是我的查询:
LOAD CSV WITH HEADERS FROM "file:///customers_table.csv" AS row WITH row
MATCH (m:Main) WITH m
MATCH (c:Customers) USING INDEX c:Customers(customer)
WHERE m.ASIN = row.asin AND c.customer = row.customer
CREATE (c)-[:RATED]->(m)
这是我收到的错误:
Variable `row` not defined (line 4, column 16 (offset: 164))
"WHERE m.ASIN = row.asin AND c.customer = row.customer"
^
主表的示例是:
{
"ASIN": "0827229534",
"totalreviews": "2",
"categories": "2",
"title": "Patterns of Preaching: A Sermon Sampler",
"avgrating": "5",
"group": "Book"
}
一个客户的例子是:
{
"customer": "A2FMUVHRO76A32"
}
在客户表csv中,我有:
Customer, ASIN, rating
A2FMUVHRO76A32, 0827229534, 5
我似乎无法弄清楚为什么它会抛出该错误。
查询中的第一个WITH
子句( WITH row
)是不必要的,但是您必须将变量添加到WITH
子句中。 因此,此版本进行了编译。
LOAD CSV WITH HEADERS FROM "file:///customers_table.csv" AS row
MATCH (m:Main)
WITH m, row
MATCH (c:Customers) USING INDEX c:Customers(customer)
WHERE m.ASIN = row.asin AND c.customer = row.customer
CREATE (c)-[:RATED]->(m)
这样做的原因是,从本质上讲, WITH
两个查询部分链接在一起,同时将范围限制在其变量之内(在某些情况下,还执行计算,汇总等)。
话虽如此,您甚至不需要第二个WITH
子句,就可以忽略它,甚至将两个MATCH
子句合并为一个:
LOAD CSV WITH HEADERS FROM "file:///customers_table.csv" AS row
MATCH (m:Main), (c:Customers) USING INDEX c:Customers(customer)
WHERE m.ASIN = row.asin AND c.customer = row.customer
CREATE (c)-[:RATED]->(m)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.