【问题标题】:Load nodes and create relations from a single csv file从单个 csv 文件加载节点并创建关系
【发布时间】:2019-04-15 12:40:30
【问题描述】:

我必须加载具有 id (cui) 和疾病名称的 CSV 文件,其中一些 id 会重复,但名称略有不同。我想为所有其他名称略有不同的名称创建具有唯一 ID 的节点和节点。具有替代名称的节点将与初始节点具有[:HAS_ALTERNATIVE_NAME] 关系。

我有一个查询,它在节点属性中附加替代名称,这次我想通过为每个替代名称创建一个节点来规范问题。

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM 'file:///Concepts_50000.csv' AS line 
FIELDTERMINATOR '\t'
MERGE (d:Disease{id: line.CUI})
ON CREATE SET 
    d.prefered_name = line.name,
    d.alternative_name = line.name
ON MATCH SET
    d.alternative_name = d.alternative_name+', '+line.name;

最后,我希望有这样的情况,一种疾病有替代名称节点。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    这可能会做你想要的:

    USING PERIODIC COMMIT 
    LOAD CSV WITH HEADERS FROM 'file:///input.csv' AS line 
    FIELDTERMINATOR '\t'
    MERGE (d:Disease {id: line.CUI})
    MERGE (n:DiseaseName {name: line.name})
    MERGE (d)-[: HAS_ALTERNATIVE_NAME]->(n)
    

    [更新]

    为了获得更好的性能,请确保您开启了indexes

    • :Disease(id)
    • :DiseaseName(name)

    【讨论】:

    • 这个查询完全符合我的需要,但在大量数据中表现不佳。是否有另一种方法可以使用 apoc 库来实现我的目标?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多