gpt4 book ai didi

python - 将数据从 MySQL 传输到 Neo4j

转载 作者:行者123 更新时间:2023-11-30 01:04:03 27 4
gpt4 key购买 nike

我们正在将基于 MySQL 的 Django 应用程序迁移到 Neo4j。在 MySQL 中,我们有一个 Providers 表和一个 Referrals 表。引用表只有一个provider_from_id、provider_to_id 和一个count 列。它代表从一个提供商到另一提供商的推荐。

我们所有超过 400 万的提供商都已转移到 Neo4j。我们计划将引用表示为 Neo4j 中不同提供商节点之间的关系。

问题在于,有超过 40,000,000 行引用,而 Neo4j 在创建关系方面的性能似乎非常糟糕。这是我们用来创建关系的脚本。按照目前的速度,需要2个多月的时间。有没有更好的方法来传输这些数据?

graph_db = neo4j.GraphDatabaseService()

# Link to providers index
providers_index = graph_db.get_or_create_index(neo4j.Node, "Providers")

# Let's start transferring!
while True:
total_so_far = num_transferred + num_orphaned
referrals = Referral.objects.all().order_by('id')[total_so_far:total_so_far+1000000]
if not referrals:
break

for referral in referrals:
# We need to get the nodes for both providers (assuming they exist)
provider_from = providers_index.get("npi", referral.provider_from_id)
provider_to = providers_index.get("npi", referral.provider_to_id)

if provider_from and provider_to:
# We have matches for both providers, let's create the relationship
graph_db.create((provider_from[0], "REFERRED", provider_to[0], {"count": referral.num_referrals}))

最佳答案

问题是 py2neo 使用 Neo4j 的 RESTful 接口(interface)来执行所有这些插入,这意味着它将一次执行一个操作,具体取决于您的 Neo4j 版本。

您有机会使用Batch Importer吗?哪个会在初始加载时从 CSV 导入?如果没有,您可以使用 Java 为此编写自己的 native 批量导入器吗?

关于python - 将数据从 MySQL 传输到 Neo4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com