如何将包含大量空值和列的中型CSV导入Neo4j
我必须将现有的药物本体导入Neo4j。该本体存储在CSV文件中;它包含约30000行和每行192列(即值)。问题是,在这192列中,绝大多数(~170)在几乎所有的行中都有空值 到目前为止,我遇到的示例涉及更简单的模式(4或5列)。此外,我还没有发现任何关于如何处理此类模型的有用见解。然而,我发现了关于空值的信息;然而,作为Neo4j的新手,我不确定导入CSV文件中数据的最佳方式是什么。据我所知,有以下几种选择:如何将包含大量空值和列的中型CSV导入Neo4j,neo4j,graph-databases,ontology,import-csv,Neo4j,Graph Databases,Ontology,Import Csv,我必须将现有的药物本体导入Neo4j。该本体存储在CSV文件中;它包含约30000行和每行192列(即值)。问题是,在这192列中,绝大多数(~170)在几乎所有的行中都有空值 到目前为止,我遇到的示例涉及更简单的模式(4或5列)。此外,我还没有发现任何关于如何处理此类模型的有用见解。然而,我发现了关于空值的信息;然而,作为Neo4j的新手,我不确定导入CSV文件中数据的最佳方式是什么。据我所知,有以下几种选择: 分阶段进口。根据Neo4j官方网页上的一次网络研讨会,我可以首先导入ID列,然后针
考虑到我的原始CSV文件的特性,特别是大量的列,您建议采用哪种方式将数据导入Neo4j?我非常感谢Neo4j的专家或经验丰富的用户的建议。我以前也遇到过类似的情况,并选择使用最接近您的第一个备选方案-尽管有一个“放松”语句,使得预先过滤CSV变得不必要 假设索引0提供了(药物)的id,并且(d)的可空id从索引1-191运行:
USING PERIODIC COMMIT 10000
LOAD CSV FROM "file:///Users/user/ontology_with .csv" AS line
UNWIND range(1,191) as i
MATCH (drug:Drug {id: line[0]})
MATCH (d:Drug {id: line[i]})
CREATE (drug)-[:ACTIVATES_DRUG]->(d)
空值不应该为匹配返回任何内容(d:Drug{id:line[i]}),因此将被跳过。最终,它变得有点复杂。大多数CSV列存储多值关系,值之间用“|”分隔,因此我必须调整前面的答案。以下是这种多值关系的一个示例,以防它对其他人有用:
LOAD CSV WITH HEADERS FROM "file:///DINTO_CSVLint.csv" AS line
WITH line, SPLIT(line.`may interact with`, '|') AS ddiDrugs
UNWIND ddiDrugs AS i
MATCH (sourceDrug:Drug {preferredLabel: line.`Preferred Label`})
MATCH (destDrug:Drug {uri: i})
MERGE (sourceDrug)-[r:MAY_INTERACT_WITH]->(destDrug)
RETURN r;
我在其余的关系中使用了类似的方法。为什么不将RDF导入到适当的triplestore中?
USING PERIODIC COMMIT 10000
LOAD CSV FROM "file:///Users/user/ontology_with .csv" AS line
UNWIND range(1,191) as i
MATCH (drug:Drug {id: line[0]})
MATCH (d:Drug {id: line[i]})
CREATE (drug)-[:ACTIVATES_DRUG]->(d)
LOAD CSV WITH HEADERS FROM "file:///DINTO_CSVLint.csv" AS line
WITH line, SPLIT(line.`may interact with`, '|') AS ddiDrugs
UNWIND ddiDrugs AS i
MATCH (sourceDrug:Drug {preferredLabel: line.`Preferred Label`})
MATCH (destDrug:Drug {uri: i})
MERGE (sourceDrug)-[r:MAY_INTERACT_WITH]->(destDrug)
RETURN r;