将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
是一个将会的工具
- 检查现有的关系数据库模式
- 将规则应用于此模式以转换为属性图模型
- 可选地,提供用于编辑如何应用该翻译的GUI界面
- 从关系数据库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.jdbc
或neo4j-etl-components
运行增量版本的导入。