neo4j - 如何在 neo4j 中从 csv 创建节点和关系
问题描述
我正在加载一个带有cypher
查询的 csv 文件。csv 文件有 4 列。2 表示列,2 表示表,如下所示。
我想从这 4 列创建 2 种类型的节点数据库和表。如何为数据库和列创建唯一节点并在它们之间建立关系?
根据logisima's
答案,我在查询下方添加了为数据库和列创建节点并添加了关系。但是节点中有一些重复。
`LOAD CSV WITH HEADERS FROM 'file:///test1.csv' AS row
MERGE (source:Database { source: row.Source_DB})
MERGE (target:Database { target: row.Target_DB})
MERGE (source_table:Table { source_table: row.Source_Table})
MERGE (target_table:Table { source_table: row.Target_Table})
MERGE (source)-[:LINKED_TO]-> (target)
MERGE (source)-[:LINKED_TO]-> (source_table)
MERGE (source)-[:LINKED_TO]-> (target_table)
MERGE (target)-[:LINKED_TO]-> (target_table)`
请耐心等待我是 Neo4j 的新手。
解决方案
类似的东西?
LOAD CSV WITH HEADERS FROM 'file:///MASTER.csv' AS row
MERGE (source:Database { db: row.Source_DB, table: row.Source_Table})
MERGE (target:Database { db: row.Target_DB, table: row.Target_Table})
MERGE (source)-[:LINKED_TO]->(target)
更新评论
CREATE CONSTRAINT ON (n:Database) ASSERT n.db IS UNIQUE;
CREATE CONSTRAINT ON (n:Table) ASSERT n.id IS UNIQUE;
LOAD CSV WITH HEADERS FROM 'file:///MASTER.csv' AS row
MERGE (sourceDb:Database { db: row.Source_DB})
MERGE (sourceTable:Table { id: row.Source_DB + "-" + row.Source_Table, table: row.Source_Table})
MERGE (sourceDb)-[:HAS_TABLE]->(sourceTable)
MERGE (targetDb:Database { db: row.Target_DB})
MERGE (targetTable:Table { id: row.Target_DB + "-" + row.Target_Table, table: row.Target_Table})
MERGE (targetDb)-[:HAS_TABLE]->(targetTable)
MERGE (sourceTable)-[:LINKED_TO]->(targetTable);
推荐阅读
- c# - 如何将 NAudio 添加到我的项目中?
- mysql - MySQL:如何添加 IF EXISTS 然后 UPDATE Else INSERT?
- java - jni: c to java char* 缓冲区数据以通用格式传递
- umbraco - 传输队列不包括文件夹内的内容
- python-3.x - Python 日志记录 - 使用带有密钥/代码的预格式化消息文件
- mysql - 在同一列上选择多个位置
- django - html表格渲染
- php - mysqli_query 中的语法错误
- android - 在 RecyclerView 适配器中使用带有 Activity 作为参数的方法
- machine-learning - 小数据集上变化极大的 r 平方分数