neo4j Cypher读取CSV,将标签添加到数据集并创建索引

1yjd4xko  于 2023-05-28  发布在  其他
关注(0)|答案(1)|浏览(180)

在Cypher中,我想读取两个CSV文件,为它们添加标签,在一些字段上定义索引,最后通过两个数据集之间的公共字段将两个数据集关联起来。
我该怎么做?就像这样:

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///1.csv' AS row
CREATE (:A {PROGRAM_CODE:row.PRODUCT_CODE,PRODUCT_NAME:row.PROGRAM_NAME,Stuid:row.CUSTOMER_NO})
CREATE INDEX ON :A(PROGRAM_CODE)
CREATE INDEX ON :A(CUSTOMER_NO)
RETURN count(A);

阅读第二个标签为B的CSV也是如此,然后在A.CUSTOMER_NO和B.CUSTOMER_NO上建立关系,最后将PRODUCT_NAMES和Customers显示为关系的图形可视化。
谢谢

ercv8c1e

ercv8c1e1#

听起来你想做这样的事情:

CREATE CONSTRAINT CUSTOMER_NO_CONSTRAINT IF NOT EXISTS
FOR (n:A) REQUIRE n.CUSTOMER_NO IS NODE KEY

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///1.csv' as row
CREATE (:A {PROGRAM_CODE:row.PRODUCT_CODE, PRODUCT_NAME:row.PROGRAM_NAME, Stuid:row.CUSTOMER_NO})

创建CUSTOMER_NO是节点键的约束意味着属性必须存在并且对于每个节点都是唯一的。即使没有A节点,约束也存在于数据库中。
如果你只需要一个索引而不是一个键:

CREATE BTREE INDEX CUSTOMER_NO_INDEX
FOR (n:A)
on (n.CUSTOMER_NO)

然后对PROGRAM_CODE执行相同的操作。
额外提示:虽然Cypher允许您按照自己的意愿标记节点、关系和属性,但命名约定是:labels:LabelName(从第一个单词开始大写)属性:customerNo(从第二个单词开始大写)关系:MY_RELATIONSHIP(全部大写,下划线)
这使得只看代码就能更容易地理解结构。:)
希望有帮助!

相关问题