我有两个csv文件,一个包含source_node,destination_node格式的两列,另一个包含节点列表。现在我尝试使用带有
的第一个文件创建图形var jsonObj = {
"rx": {
"vials": [
{
"description": "Rx 1",
"strength": 100,
"form": "ML",
"pkg_size": 10,
"case_size": 1,
"ndc": "12345-1234-12",
"covered": true
}
]
}
};
jsonObj.rx.vials[0].total_units = jsonObj.rx.vials[0].strength * jsonObj.rx.vials[0].pkg_size;
console.log(jsonObj.rx.vials[0].total_units);
但我想创建节点以及节点之间的关系,其中源节点和目标节点都在第二个csv的列中。我尝试使用WHERE作为
load csv with headers from "file:///C:/Users/neo4j_workspace/new_graph_db/import/sample_edges.csv" as table
merge (a:Node{name:table.destination_node })
with table, a
merge (b:Node{name:table.source_node})
with a, b
merge (a)-[:relates]->(b)
但我知道哪里不能与合并一起使用。我知道关于CASE,但我无法使用它形成正确的查询。我的数据库在开始时是空的。
答案 0 :(得分:1)
使用您尝试的方法,查询将在您的第一个CSV的所有行与第二个CSV的所有行之间创建一个笛卡尔积。这种方法表现不佳。
相反,我建议单独处理每个文件,首先通过从第一个CSV创建所有节点,然后(在添加索引之后:节点(名称),如果它还没有)处理第二个CSV,按名称与行上的每个节点匹配并合并关系。