我的 match/merge 进程没有在 Neo4J 数据库中创建关系

My match/merge process is not creating relationships in the Neo4J database

我是 Neo4j/cypher/graph 数据库的新手,一直在尝试按照 Neo4j tutorial 导入我在 csv 中的数据并创建关系。

以下代码在读取数据、创建节点和设置属性方面做了我想要的。

/* Importing data on seller-buyer relationshsips */
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///customer_rel_table.tsv' AS row
FIELDTERMINATOR '\t'
MERGE (seller:Seller {sellerID: row.seller})
    ON CREATE SET seller += {name: row.seller_name,
                             root_eid: row.vendor_eid,
                             city: row.city}
MERGE (buyer:Buyer {buyerID: row.buyer})
    ON CREATE SET buyer += {name: row.buyer_name};


/* Creating indices for the properties I might want to match on */
CREATE INDEX seller_id FOR (s:Seller) on (s.seller_name);
CREATE INDEX buyer_id FOR (b:Buyer) on (b.buyer_name);

/* Creating constraints to guarantee buyer-seller pairs are not duplicated */
CREATE CONSTRAINT sellerID ON (s:Seller) ASSERT s.sellerID IS UNIQUE;
CREATE CONSTRAINT buyerID on (b:Buyer) ASSERT b.buyerID IS UNIQUE;

现在我有了我想要的节点(卖家和买家),我想 link 买家和卖家。我为此尝试过的代码是:

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///customer_rel_table.tsv' AS row
MATCH (s:Seller {sellerID: row.seller})
MATCH (b:Buyer {buyerID: row.buyer})
MERGE (s)-[st:SOLD_TO]->(b)

查询运行,但我没有得到任何关系:

Query executed in 294ms. Query type: WRITE_ONLY. No results.

因为我没有要求它 RETURN 任何东西,所以我认为 "No results" 评论是正确的,但是当我查看数据库的元数据时,没有出现任何关系。另外,我的数据有 ~220K 行,所以 294ms 似乎很快。

编辑:在@cybersam 的提示下,我尝试了这个查询: MATCH p=(:Seller)-[:SOLD_TO]->(:Buyer) RETURN p,给出 No results.

为清楚起见,我的数据中有两个字段是关系的核心: sellerbuyer,卖家向买家出售东西。卖家标识符是重复的,但对于每个卖家,都有唯一的卖家-买家对。

我需要在我的代码中修复什么才能获得 sellersbuyers 之间的关系?谢谢!

您的第二个查询的 LOAD CSV 子句未指定 FIELDTERMINATOR '\t'。默认终止符是逗号 (',')。这可能就是它无法 MATCH 任何事情的原因。

尝试在该子句末尾添加 FIELDTERMINATOR '\t'