从JSON导入数据

时间:2018-05-06 19:22:30

标签: neo4j cypher

我在使用apoc.load.json过程导入JSON文件时遇到问题。

我想要捕捉的预期关系: 大学 - 儿童 - > Class --child - >学生

输出:

Neo.ClientError.Statement.SyntaxError: Variable `value` not defined (line 1, column 8 (offset: 7))
"UNWIND value.university AS university"

以下是执行的命令序列:

CALL apoc.load.json("FILE:///C:/tmp/input.json") YIELD value

UNWIND value.university AS university
UNWIND university.class AS class
UNWIND class.student AS student
MERGE (u:UniversityCategory {name:university.name})
MERGE (c:ClassCategory {name:class.name})
MERGE (s:StudentCategory {instr:student.name})
ON CREATE SET i.ID = instructions.ID
ON CREATE SET i.GPA = instructions.GPA
MERGE (u)-[:CHILD]->(c)
MERGE (c)-[:CHILD]->(s)

这是JSON文件结构:

{
    "university": [{
        "name": "universityA",
        "class": [{
                "name": "class_1",
                "student": [{
                        "name": "student_1",
                        "ID": "1234",
                        "GPA": "3.8"
                    },
                    {
                        "name": "student_2",
                        "ID": "12345",
                        "GPA": "3.4"
                    }
                ]
            },
            {
                "name": "class_2",
                "student": [{
                    "name": "student_3",
                    "ID": "14",
                    "GPA": "3.0"
                }]
            }
        ]
    }]
}

我的apoc.load.json命令似乎有效,因为我在浏览器窗口中看到了结构化的JSON文件。接下来的步骤是可疑的,但我认为我接近定义关系。

1 个答案:

答案 0 :(得分:0)

解决了我的问题。

我上面提到的命令都是正确的,但是load.apoc.json命令必须在SAME查询中运行,而不是顺序运行。