node.js - 将 SQL Server 数据迁移到 Neo4j 并使两个数据库的数据保持同步

标签 node.js sql-server-2008 neo4j

如何在不使用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 是一个工具,它将

  1. 检查现有关系数据库架构
  2. 将规则应用于此架构以转换为属性图模型
  3. (可选)提供一个 GUI 界面,用于编辑如何应用此翻译
  4. 从关系数据库中进行流式导出以创建新的 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/

相关文章:

node.js - 重用浏览器实例 puppeteer

sql-server - 当时间戳(rowversion)溢出时会发生什么?

sql-server - 在 PowerShell 中组装 SSIS 包

python - 使用 Neo4j-Python 连接器创建/合并图形期间出现 CypherError

java - Neo4j 批量数据 - 创建关系 [OutOfMemory 异常]

java - 如何将实体映射到现有图形?

node.js - Node : write to stdin of bash process crashes with EPIPE

javascript - 从 ClojureScript 使用 highcharts Node 导出服务器时出现问题 - "0x03 error when performing chart generation"

node.js - Sails-React : Access props from Parent Component

c# - 将 Guid 值插入到 Sql Server(UniqueIdentifier 列)时出错。 (内有说明)