1

我在这个论坛上搜索并用谷歌搜索,但我找不到我的特殊问题的解决方案。我必须创建一个新的图形数据库(neo4j,cypher)并且我必须创建许多数据。就像是:

CREATE (:Mitglied { userID:1, vorname:"Jennifer", nachname:"Koch", geburtstag:"1977-12-11" }),
(:Mitglied { userID:2, vorname:"Lina", nachname:"Hansen", geburtstag:"1984-04-08" }), 
(:Mitglied { userID:3, vorname:"Paul", nachname:"Brandt", geburtstag:"1956-08-13" }), 
(:Mitglied { userID:4, vorname:"Sophie", nachname:"Peters", geburtstag:"1972-12-24" }), 
(:Mitglied { userID:5, vorname:"Manuel", nachname:"Graf", geburtstag:"1996-02-06" }),
...

所以我尝试用 C# 执行 shell 批处理(Neo4jShell.bat),将一些数据复制并粘贴到 webadmin 中。没有成功:(我的代码(启动一个新进程并使用输入流插入每一行)在短时间内停止,没有发生任何事情(无论是数据还是程序)。Webadmin 需要很长时间才能创建 500 个创建。我有 2,100,000 个创建...

那么你们中的任何人都可以帮助我并说出我能做什么吗?我目前还没有任何想法:(这是为了学习,所以导入关系数据库不是一个解决方案 - 必须使用查询创建数据。但由于数据量很大,它应该自动发生;)

非常感谢!

4

2 回答 2

2

我在您的评论中看到您正在使用C#,但是您精通 Java 吗?如果是这样,您可以使用批处理插入器,它适用于这种大型的一次性摄取。

如果没有,使用地图列表是否更快?

于 2013-08-08T02:02:34.633 回答
0

我发现这个问题的解决方案是在 C# 中手动执行查询。我有一个大学生数据库。这是我的代码:

StringBuilder query_text = new StringBuilder();
query_text.Append("LOAD CSV WITH HEADERS FROM \"file:C:/.../students.csv\" AS csvLine ");
query_text.Append("MERGE(faculty: Faculty { name: csvLine.faculty}) ");
query_text.Append("MERGE(university: University { name: csvLine.university }) ");
query_text.Append("CREATE(student: Student { studentid: csvLine.student_id, name: csvLine.name, surname: csvLine.surname, address: csvLine.address, faculty: csvLine.faculty, university: csvLine.university}) ");
query_text.Append("CREATE(student) -[:STUDIES]->(faculty) ");
query_text.Append("CREATE(faculty) -[:OF]->(university)");
CypherQuery query = new CypherQuery(query_text.ToString(), new Dictionary<string, object>(), CypherResultMode.Set);
try {
    ((IRawGraphClient)client).ExecuteGetCypherResults<Studentas>(query);
}
catch(Exception e){ }
于 2015-12-27T11:06:54.637 回答