将SQL Server数据迁移到Neo4j,并保持两个数据库的数据同步

如何在不使用LOAD CSV情况下将数据从SQL Server迁移到Neo4j?

其他工具不能根据模式给出完整的转换,只是一个示例(例如:ETL)。 如果有什么可以做一个节点js应用程序将是伟大的。

另外如何保持SQL Server和Neo4j之间的数据同步?

这里有几个选项: apoc.load.jdbc是一个选项,也有neo4j-etl-components项目。

apoc.load.jdbc

有能力连接到一个关系数据库,并将SQL查询的结果从APOC过程库中的Cypher内部stream式传输到Neo4j。

例如:

 // Create Product nodes CALL apoc.load.jdbc("jdbc:mysql://localhost:3306/northwind?user=root","SELECT * FROM products") YIELD row CREATE (p:Product {ProductID: row.ProductID}) SET p.ProductName = row.ProductName, p.CategoryID = row.CategoryID, p.SupplierID = row.SupplierID 

更多信息可在文档中find。

的Neo4j-ETL组件

neo4j-etl-components是一个将会的工具

  1. 检查现有的关系数据库模式
  2. 将规则应用于此模式以转换为属性图模型
  3. 可选地,提供用于编辑如何应用该翻译的GUI界面
  4. 从关系数据库stream导出来创build一个新的Neo4j数据库(脱机批处理)或在线增量插入到Neo4j。

neo4j-etl-components可以用作命令行工具。 例如,要运行初始批量导入:

 ~: $NEO4J_HOME/bin/neo4j-etl export \ --rdbms:url jdbc:oracle:thin:@localhost:49161:XE \ --rdbms:user northwind --rdbms :password northwind \ --rdbms:schema northwind \ --using bulk:neo4j-import \ --import-tool $NEO4J_HOME/bin \ --csv-directory /tmp/northwind \ --options-file /tmp/northwind/options.json \ --quote '"' --force 

在这里看到这里的文档和Github页面的项目。

保持同步

一旦你完成了最初的导入过程,你需要保持数据同步。 一种select是在应用程序层处理这个问题,用负责写入两个数据库的工作人员写入队列,或者使用apoc.load.jdbcneo4j-etl-components运行增量版本的导入。