如何在不使用LOAD CSV
的情况下将数据从SQL Server迁移到Neo4j?
其他工具不会根据架构提供完整的转换,而只是一个示例(例如:ETL)。如果有什么事情可以用 Node js 应用程序完成,那就太好了。
另外如何保持 SQL Server 和 Neo4j 之间的数据同步?
最佳答案
这里有几个选项:apoc.load.jdbc
是一个选项,还有 neo4j-etl-components
项目。
apoc.load.jdbc
可以连接到关系数据库并将 SQL 查询结果从 Cypher 中流式传输到 Neo4j,可在 APOC procedure library 中找到。 .
例如:
// 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
更多信息请参阅 docs.
neo4j-etl-组件
neo4j-etl-components
是一个工具,它将
- 检查现有关系数据库架构
- 将规则应用于此架构以转换为属性图模型
- (可选)提供一个 GUI 界面,用于编辑如何应用此翻译
- 从关系数据库中进行流式导出以创建新的 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
请参阅文档 here以及该项目的 Github 页面 here.
保持同步
完成初始导入后,您当然需要保持数据同步。一种选择是在应用程序层处理此问题,使用负责写入两个数据库的工作人员写入队列,或者使用 apoc.load.jdbc
或 运行导入的增量版本neo4j-etl-组件
。
关于node.js - 将 SQL Server 数据迁移到 Neo4j 并使两个数据库的数据保持同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45902827/