单向数据库同步到 MySQL

发布于 2024-11-28 15:11:03 字数 776 浏览 3 评论 0原文

我有一个基于 VFP 的应用程序,其中包含一个充满 DBF 的目录。我使用 .NET 中的 ODBC 连接该数据库并在该数据库上执行事务。我想将此数据镜像到我的网络主机上运行的 mySQL。

注意:

  • 这只是一个单向镜子。 VFP 到 mySQL
  • 仅必须支持插入和更新。删除并不重要
  • 并非所有表都是必需的。事实上,我更愿意使用定义的 SELECT 语句来仅镜像必要数据的伪视图,
  • 我没有在任何 VFP 记录上使用“时间修改”标记。
  • 我没有大量的数据记录(总共可能有几千条),mySQL 端也没有大量的并发用户,但希望尽可能高效。

建议的插入策略(看起来没那么糟糕...):

  • 在 mySQL 中构建临时表,插入我想要镜像的 VFP 表/视图的所有主键
  • 运行“从 tempTable 中选择主键不在(从镜像表中选择主键) “在 mySQL 端识别丢失的记录
  • 为这些记录生成并运行必要的 INSERT sql
  • 删除临时表

建议的更新策略(看起来非常重量级,可能会破坏 mySQL 删除表上的打开查询):

  • 在 mySQL 中构建临时表并从 VFP 表/视图中插入所有记录 我想要镜像
  • 删除现有的 mySQL 表
  • 将 tempTable 名称更改为新表名称

这些只是我想到的第一个策略,我确信有更有效的方法来做到这一点(特别是更新侧)。

我正在寻找一些替代策略。有什么绝妙的想法吗?

I have an VFP based application with a directory full of DBFs. I use ODBC in .NET to connect and perform transactions on this database. I want to mirror this data to mySQL running on my webhost.

Notes:

  • This will be a one-way mirror only. VFP to mySQL
  • Only inserts and updates must be supported. Deletes don't matter
  • Not all tables are required. In fact, I would prefer to use a defined SELECT statement to only mirror psuedo-views of the necessary data
  • I do not have the luxury of a "timemodified" stamp on any VFP records.
  • I don't have a ton of data records (maybe a few thousand total) nor do I have a ton of concurrent users on the mySQL side, want to be as efficient as possible though.

Proposed Strategy for Inserts (doesn't seem that bad...):

  • Build temp table in mySQL, insert all primary keys of the VFP table/view I want to mirror
  • Run "SELECT primaryKey from tempTable not in (SELECT primaryKey from mirroredTable)" on mySQL side to identify missing records
  • Generate and run the necessary INSERT sql for those records
  • Blow away the temp table

Proposed Strategy for Updates (seems really heavyweight, probably breaks open queries on mySQL dropped table):

  • Build temp table in mySQL and insert ALL records from VFP table/view I want to mirror
  • Drop existing mySQL table
  • Alter tempTable name to new table name

These are just the first strategies that come to mind, I'm sure there are more effective ways of doing it (especially the update side).

I'm looking for some alternate strategies here. Any brilliant ideas?

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

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

发布评论

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

评论(2

我还不会笑 2024-12-05 15:11:03

听起来您想要一些小东西,但您可以尝试浏览一些复制设计模式。 Microsoft 在此处记录了一些数据复制模式,这是一个很好的起点。我的建议是查看简单的数据移动副本模式。

It sounds like you're going for something small, but you might try glancing at some replication design patterns. Microsoft has documented some data replication patterns here and that is a good starting point. My suggestion is to check out the simple Move Copy of Data pattern.

墨小墨 2024-12-05 15:11:03

您的 VFP 表是否位于 VFP 数据库 (DBC) 中?如果是这样,您应该能够在该数据库上使用触发器来设置有关 MySQL 中哪些数据需要更新的信息。

Are your VFP tables in a VFP database (DBC)? If so, you should be able to use triggers on that database to set up the information about what data needs to updated in MySQL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文