从 MySQL 导出到 Neo4j

Posted

技术标签:

【中文标题】从 MySQL 导出到 Neo4j【英文标题】:Export from MySQL to Neo4j 【发布时间】:2013-11-20 19:55:10 【问题描述】:

我有这样的问题。 我在 mysql 中有大数据库 - ***的所有页面。 我想构建所有页面的图表(近 100 万个页面是真实页面,而不是重定向等)以及指向其他页面的链接。 所以为此我想使用neo4j。 我试图用这样的代码来做到这一点

    var neo4j = require('neo4j');
neo4j = new neo4j.GraphDatabase('http://localhost:7474');

var mysql = require('mysql');
var connection = mysql.createConnection(
    host: 'localhost',
    user: 'root',
    password: '******',
    database: 'wiki-wizualizer'
);
connection.connect();

var numberOfPages = 0;
// Number of pages from DB
connection.query("SELECT COUNT(1) AS number FROM page WHERE page.page_is_redirect = false AND page.page_namespace = 0", function (err, rows, fields) 
    numberOfPages = rows[0].number;

    var per_page = 10;
    var n = numberOfPages;
    var k = 0;
    for (var i = 0; i < parseInt((n + per_page - 1) / per_page) && i < parseInt((numberOfPages + per_page - 1) / per_page); i++) 
        // Query for selecting vertices
        var q = "SELECT page.page_id AS page_id, page.page_title AS title FROM page " +
            "WHERE page.page_id > " + per_page * i + " AND page.page_id <= " + per_page * (i + 1) + " AND page.page_is_redirect = false AND " +
            "page.page_namespace = 0 ORDER BY page_id LIMIT " + per_page;
        connection.query(q, function (err, rows, fields) 
            // Progress
            console.log('' + (k / parseInt((n + per_page - 1) / per_page) * 100).toFixed(2) + '%');
            k += 1;

            for (var j = 0; j < rows.length; j++) 
                var node = neo4j.createNode(title: rows[j].title);     // instantaneous, but...
                node.save(function (err, node) 
                );
            
        );
    
);
connection.end();

但这需要太多时间(它每分钟只创建 700 个顶点)。 我将所有数据(MySQL 和 neo4j)存储在单个 HDD 上。 有什么方法可以加快速度吗? 如果我将 neo4j 移到 SSD 会有帮助吗?

【问题讨论】:

你看过批量插入吗?我不确定这是否存在于 node.js 驱动程序中。 也许这就是我需要的。我会了解的 【参考方案1】:

查看:http://neo4j.org/develop/import

特别是。 CSV 批量导入器,它可以帮助您轻松生成代表节点和关系的 csv 文件,然后直接导入它们。

有关使用密码导入数据的更多信息,请查看:http://jexp.de/blog/2013/05/on-importing-data-in-neo4j-blog-series/

【讨论】:

以上是关于从 MySQL 导出到 Neo4j的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 neo4j 导出到 csv 而不是 json

ArangoDB - 如何将neo4j数据库导出导入ArangoDB

Neo4J入门笔记[2]---导出数据为CSV

如何以自动化方式导出大型 Neo4j 数据集进行分析

将Neo4j 3.2.2图表导出到Gephi 0.9.1的问题

neo4j 数据库迁移