2015-01-04 75 views
2

所以我想从Mysql数据库迁移到neo4j数据库。对于新的neo4j数据库,我计划了这里所述的新闻传播功能http://neo4j.com/docs/stable/cypher-cookbook-newsfeed.html这种机制与新闻传递只是一堆行的mysql显然不同。那么有没有办法将-[status_update]->()-[next]->()-格式的mysql行快速导入neo4j?目前,我有mysql数据库,如下所示:Neo4j CSV导入状态更新

user table 
+-------+--------------+ 
| id | username  | 
+-------+--------------+ 
| 1  | pewpewlasers | 
+-------+--------------+ 

posts table 
+-------+----------+------------+ 
| id | user_id | status  | 
+-------+----------+------------+ 
| 1  | 1  | something | 
+-------+----------+------------+ 
| 2  | 1  | new update | 
+-------+----------+------------+ 

回答

2

如果输出为CSV格式,你可以使用LOAD CSV这样的:

USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM "file:///path/to/file/user.csv" AS line 
CREATE (:User {id: toInt(line.id), username: line.username}); 

USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM "file:///path/to/file/posts.csv" AS line 
CREATE (:Post {id: toInt(line.id), line.status}); 

USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM "file:///path/to/file/posts.csv" AS line 
MATCH (user:User {id: toInt(line.user_id)}) 
MATCH (post:Post {id: toInt(line.id)}) 
CREATE user-[:status_update]->post; 

USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM "file:///path/to/file/posts.csv" AS line 
MATCH 
    (post:Post {id: toInt(line.id)}) 
    (previous_post:Post {id: toInt(line.id) - 1}) 
CREATE previous_post-[:next]->post; 

你也许可以结合一些这些的,但我总是小心地分手了,因为这里所说的急切问题的查询:

http://www.markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/

+0

不得不改变一些东西,但这是想法肯定。谢谢! – pewpewlasers