首页 文章

在neo4j中上传CSV

提问于
浏览
1

我试图通过以下命令将以下csv(https://www.dropbox.com/s/95j774tg13qsdxr/out.csv?dl=0)文件上传到neo4j

LOAD CSV WITH HEADERS FROM
  "file:/home/pavan637/Neo4jDemo/out.csv"
  AS csvimport
match (uniprotid:UniprotID{Uniprotid: csvimport.Uniprot_ID})

merge (Prokaryotes_Proteins: Prokaryotes_Proteins{UniprotID: csvimport.DBUni, ProteinID: csvimport.ProteinID, IdentityPercentage: csvimport.IdentityPercentage, AlignedLength:csvimport.al, Mismatches:csvimport.mm, QueryStart:csvimport.qs, QueryEnd: csvimport.qe, SubjectStrat: csvimport.ss, SubjectEnd: csvimport.se, Evalue: csvimport.evalue, BitScore: csvimport.bs})

merge (uniprotid)-[:BlastResults]->(Prokaryotes_Proteins)

我在LOAD CSV命令中使用了“match”命令,以便与之前加载的CSV的“Uniprot_ID”匹配 .

我首先使用以下cypher加载了ReactomeDB.csv(https://www.dropbox.com/s/9e5m1629p3pi3m5/Reactomesample.csv?dl=0

LOAD CSV WITH HEADERS FROM
  "file:/home/pavan637/Neo4jDemo/Reactomesample.csv"
  AS csvimport
merge (uniprotid:UniprotID{Uniprotid: csvimport.Uniprot_ID})

merge (reactionname: ReactionName{ReactionName: csvimport.ReactionName, ReactomeID: csvimport.ReactomeID})

merge (uniprotid)-[:ReactionInformation]->(reactionname)

进入neo4j这是成功的 .

后来我上传了out.csv

从两个CSV文件中,都存在Uniprot_ID列,其中一些ID是相同的 . 虽然一些Uniprot_ID很常见,但neo4j没有返回任何行 .

任何解决方案在此先感谢

Pavan Kumar Alluri

1 回答

  • 0

    只是一些提示:

    • 仅使用一个标签和一个属性 MERGE

    • ON CREATE SET ... 设置其他人

    • 尝试单独创建节点和rels,否则你可能会get into memory issues

    • 您应该与您的拼写以及属性和标签的大写/小写一致,否则您将花费数小时进行调试(标签,rel-types和属性名称区分大小写)

    • 你可能不需要合并关系,创建应该做得很好

    对于你的陈述:

    CREATE CONSTRAINT ON (up:UniprotID) assert pp.Uniprotid is unique;
    CREATE CONSTRAINT ON (pp:Prokaryotes_Proteins) assert pp.UniprotID is unique;
    
    USING PERIODIC COMMIT 10000
    LOAD CSV WITH HEADERS FROM "file:/home/pavan637/Neo4jDemo/out.csv" AS csvimport
    merge (pp: Prokaryotes_Proteins {UniprotID: csvimport.DBUni})
      ON CREATE SET pp.ProteinID=csvimport.ProteinID, 
                    pp.IdentityPercentage=csvimport.IdentityPercentage, ...
    ;
    
    LOAD CSV WITH HEADERS FROM "file:/home/pavan637/Neo4jDemo/out.csv" AS csvimport
    match (uniprotid:UniprotID{Uniprotid: csvimport.Uniprot_ID})
    match (pp: Prokaryotes_Proteins {UniprotID: csvimport.DBUni})
    merge (uniprotid)-[:BlastResults]->(Prokaryotes_Proteins);
    

相关问题