以下数据集已导入Neo4j。我需要建立一个关系,指示Table_ID包含Column_ID中的数据。
Table_ID Table Column_ID Column
8 Product 1753 Key
8 Product 1754 Lock
8 Product 1755 Switch
8 Product 1756 Bolt
9 Catalogue 1761 Key
9 Catalogue 1762 Wrench
9 Catalogue 1763 Spanner
9 Catalogue 1764 Screw
9 Catalogue 1765 Bolt
要创建一个关系,指示Table_Id包含Column_id。
CREATE CONSTRAINT ON (c:Column_ID) ASSERT c.id IS UNIQUE;
CREATE CONSTRAINT ON (t:Table_ID) ASSERT t.id IS UNIQUE;
LOAD CSV WITH HEADERS FROM "file:///Tableid_ColumnID.csv" AS line
MATCH (c:Column {id: toInteger (line.Column_ID)})
MATCH (t:Table {id: toInteger (line.Table_ID)})
MERGE (t)-[:CONTAINS]->(c)
查询返回(无更改,无记录)。有人可以帮忙这个查询吗?
答案 0 :(得分:1)
默认情况下, const appRoutes: Routes = [
{path: '', redirectTo: '/home', pathMatch: 'full'},
{path: 'login', component: StudentLoginComponent},
{path: 'teachersLogin', component: TeacherLoginComponent},
{path: 'adminLogin', component: AdminLoginComponent},
{path: 'home', component: HomeComponent},
{path: 'about-us', component: AboutComponent},
{
path: '',
canActivateChild: [StudentAuthGuard],
children: [
{path: 'myAttendance', component: MyAttendanceComponent}
]
},
{
path: '',
canActivateChild: [TeacherAuthGuard],
children: [
{path: 'studentList', component: StudentListComponent},
{path: 'studentCreate', component: StudentCreateComponent},
{path: 'studentCreate/:id', component: StudentCreateComponent},
{path: 'fillAttendance', component: AttendanceFillComponent},
]
},
{
path: '',
canActivateChild: [AdminAuthGuard],
children: [
{path: 'studentList', component: StudentListComponent},
{path: 'studentCreate', component: StudentCreateComponent},
{path: 'studentCreate/:id', component: StudentCreateComponent},
{path: 'teacherList', component: TeacherListComponent},
{path: 'teacherCreate', component: TeacherCreateComponent},
{path: 'teacherCreate/:id', component: TeacherCreateComponent}
]
}
];
使用逗号作为数据分隔符。您的数据文件使用一个或两个标签作为分隔符。因此,请改用此数据:
LOAD CSV
您没有显示如何创建初始节点,因此这里是一个示例说明(请注意,节点标签为Table_ID,Table,Column_ID,Column
8,Product,1753,Key
8,Product,1754,Lock
8,Product,1755,Switch
8,Product,1756,Bolt
9,Catalogue,1761,Key
9,Catalogue,1762,Wrench
9,Catalogue,1763,Spanner
9,Catalogue,1764,Screw
9,Catalogue,1765,Bolt
和Column
,而不是{{1 }}和Table
)使用您的csv文件:
Column_ID
鉴于上述节点标签,未正确创建约束,因为您没有任何带有Table_ID
和LOAD CSV WITH HEADERS FROM "file:///Tableid_ColumnID.csv" AS line
MERGE (c:Column {id: TOINTEGER(line.Column_ID)})
ON CREATE SET c.name = line.Column
MERGE (t:Table {id: TOINTEGER(line.Table_ID)})
ON CREATE SET t.name = line.Table
标签的节点。这是更正后的语句:
Column_ID
通过上述修复,您的查询(以下重复)现在将按预期工作:
Table_ID
答案 1 :(得分:0)
这将表明匹配项之一失败(因此:Column和:Table节点未正确导入或根本未导入,或者标签和属性的拼写和/或大小写均未导入)匹配实际导入的对象),或者您要合并的关系已经在所有匹配的节点之间存在。
您可能要运行查询的概要文件(这应该是安全的,因为结果没有修改图形中的内容),并确保匹配项导致行,并且在行中存在非零行数合并关系的时间点,或者从CSV中检查自己是否有数量有限的行,这些行实际上与c
和t
的匹配成功(LIMIT行,保留匹配并返回它们,避免合并)。
这应该告诉您问题是否出在匹配项上,或者合并是否简单地与现有关系匹配(意味着此导入以前已经执行过)。