首页 文章

无法在Neo4j中创建导入csv的关系

提问于
浏览
1

我无法在Neo4j中创建导入.csv文件的关系

我拥有的节点是医疗服务提供者和医疗条件

这种关系是提供者 - [条约] - >条件

这是我的提供者csv的一个子集:

Provider,ProviderID,Office,Street,City,State,Zip,Phone
Dr. Mxxxxi MD,1,The xxx Hospital,1xxx xxx Hwy,Ft Wright,KY,4xxxxx,(xxx) xxx-3304

这是我的条件csv的一个子集:

condition,conditionID
Acute Leukemia,1
Acute Lymphoid Leukemia,2
Acute Myeloid Leukemia,3
Adrenal Gland Cancer,4
....

这是我的关系csv的一个子集:

ProviderID,ConditionID
1,1
1,2
1,3
1,4
1,5
1,6
1,7
1,8
1,9
...

以下是import / create语句:

// Create providers
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///providers.csv" AS row
CREATE (:Provider {provider: row.Provider, providerID: row.ProviderID, officeName: row.OfficeName, street:row.Street,  city:row.City, state:row.State,  zip:row.Zip,  phone: row.Phone});

添加了1个标签,创建了1个节点,设置了7个属性,语句在283毫秒内完成

// Create conditions
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///conditions.csv" AS row
CREATE (:Condition {Condition: row.condition, ConditionID: 
row.conditionID});

添加了100个标签,创建了100个节点,设置了200个属性,语句在262毫秒内完成 .

我创建了索引:

CREATE INDEX ON :Provider(providerID);
CREATE INDEX ON :Condition(conditionID);

这是导入/创建关系语句和结果:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///ProviderConditionsTreated.csv" AS row
MATCH (p:Provider { providerID: row.ProviderID})
WITH p
MATCH (c:Condition { conditionID: p.ConditionID})
CREATE (p)-[t:TREATS]->(c);

(没有变化,没有记录)

我也试过这个没有记录

MATCH (p:Provider { providerID: row.ProviderID})
MATCH (c:Condition { conditionID: row.ConditionID})
CREATE (p)-[t:TREATS]->(c);

(没有变化,没有记录)

1 回答

  • 3

    我看到导入查询存在两个问题:

    • 对于标签,类型和属性名称,Cypher语言为case-sensitive . 在providers.csv文件中, ProviderID 属性以大写字符开头,但在conditions.csv文件中, conditionID 属性以小写字母开头 . 使用 LOAD CSV 命令加载它们时,这些命令实际上已更改为 providerIdConditionId . 最好保持CSV文件和顶点属性的一致性 .

    • 您不应该使用 WITH p ,因为您将无法再访问 row 变量 . 这已在您上次查询中修复 . 但是,即使这样也可以通过使用单个 MATCH 子句来简化 .

    总之,以下查询对我有用:

    USING PERIODIC COMMIT
    LOAD CSV WITH HEADERS FROM "file:///relations.csv" AS row
    MATCH
      (p:Provider { providerID: row.ProviderID}),
      (c:Condition { ConditionID: row.ConditionID})
    CREATE (p)-[t:TREATS]->(c);
    

    创建了4个关系,在110毫秒后完成 .

相关问题