将不同来源的数据合并到数据库

发布于 2024-12-25 06:39:30 字数 416 浏览 3 评论 0原文

我必须比较两个不同来源的数据。

从不同的来源,我需要获取 College_id、student_id、student_name &我想检查它们在我的数据库中是否是最新的。来源始终拥有准确的数据。

一所大学可能有多个记录。

每次登录时,我都需要在数据库中更新此信息。我该如何继续?

删除&我们的团队不推荐插入选项。那么,我该如何比较呢?

谁能提供一些有效的伪代码?我应该将源信息存储在Java中的二维数组中还是列表中或者如何存储?

如果该记录不存在于源中但存在于数据库中,那么我需要将其从数据库中删除。

如果记录存在于源&数据库中不存在,我需要将其插入到数据库中。

如果有人可以通过一些伪代码提供关于是否使用列表或二维数组的见解,我将不胜感激。

谢谢!

I've to compare data from 2 different sources.

From a different source, I need to get college_id, student_id, student_name & I want to check if they are up-to-date in my database. The source is always having accurate data.

One college may have multiple records.

Every time I login I need to keep this information up-to-date in my database. How do I proceed?

Delete & insert option is not recommended by our team. So, how do I compare?

Can any one provide some efficient pseudo code? Should I store source information in 2-D array in Java or in list or how?

If the record does not exist in source but exist in database, then I need to delete it from DB.

If the record exists in source & does not exist in db, I need to insert it in db.

Appreciate if some one can provide an insight whether to use list or 2-D array with some pseudo code.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风吹雪碎 2025-01-01 06:39:30

基本上,您需要

  1. 从数据库加载所有记录
  2. 从受信任源加载所有记录
  3. 查找数据库中不再受信任源的所有记录。删除那些。
  4. 查找可信来源中不在数据库中的所有记录。添加那些。
  5. 查找所有变更记录。更新那些。

问题是,您没有为记录指定主键,因此#5 可能不相关。

对于所有其他人,您需要一个封装记录的类,实现 equals() 和 hashCode() 方法(正确!),以及几个集合,其中包含了解 removeAll()retainAll() 方法。

希望有帮助。

附言。确实可以增量地执行此操作,例如,如果您没有足够的内存来填充整个数据集。在这种情况下,您需要能够读取有序的记录,并且排序与等价关系兼容。

Basically, you need to

  1. Load all the records from the database
  2. Load all the records from the trusted source
  3. Find all the records in DB which are not in the trusted source any more. Delete those.
  4. Find all the records in trusted source which are not in DB. Add those.
  5. Find all the changes records. Update those.

Problem is, you do not specify the primary key for your records—so #5 may be irrelevant.

For all others, you need a class which encapsulates a record, implements an equals() and hashCode() methods (properly!), and a couple of collections, with a knowledge of removeAll() and retainAll() methods.

Hope that helps.

PS. It is indeed possible to do this incrementally, e.g. if you haven't got enough emory to fill the whole dataset. In this case, you will need an ability to read the records ordered, with ordering compatible with equivalence relation.

亚希 2025-01-01 06:39:30

您概述了问题中的大部分步骤。只要进行同步即可:

  1. 从数据库中获取数据
  2. 将其与规范源中的数据进行比较
  3. 根据数据的比较,在数据库中采取适当的操作:
    • 如果没有记录,请插入一条新记录
    • 如果数据更新,请更新您的记录
    • 更新记录中的时间戳,以便您知道更新的时间
  4. 最后一步,从数据库中删除所有未根据时间戳“最近”更新的记录

You outlined most of the steps in your question. Just go through and, whenever you are syncing:

  1. Grab the data you have from your database
  2. Compare it to the data from the canonical source
  3. Based on the comparison of the data, take the appropriate action in your database:
    • Insert a new record if you didn't have one
    • Update your record if the data is updated
    • Update a timestamp on your record so that you know when you updated
  4. Last step, remove all records from your database that were not updated "recently" based on the timestamps
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文