Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在不同DBMS之间复制时如何避免数据冗余?_Mysql_Vb.net_Ms Access - Fatal编程技术网

Mysql 在不同DBMS之间复制时如何避免数据冗余?

Mysql 在不同DBMS之间复制时如何避免数据冗余?,mysql,vb.net,ms-access,Mysql,Vb.net,Ms Access,我计划创建一个VB.net应用程序,用于从数据库(MS Access)检索数据并将其存储到web服务器(MySQL数据库)。我心里真的很困惑。我计划使用任务调度器,这样程序将自动运行。我计划每5分钟定一次时间 如何避免数据冗余 例如,我计划在5分钟内完成销售,5分钟后我会再做一次。我认为在那种情况下会有裁员。我想问一下您对这种情况的看法:您将如何处理它?您需要非常仔细地考虑如何识别自上次同步周期以来已更改的数据。如果每一行数据都有一个“上次更新”的时间戳(即索引),那么您可以编写一个进程,依次从

我计划创建一个VB.net应用程序,用于从数据库(MS Access)检索数据并将其存储到web服务器(MySQL数据库)。我心里真的很困惑。我计划使用任务调度器,这样程序将自动运行。我计划每5分钟定一次时间

如何避免数据冗余


例如,我计划在5分钟内完成销售,5分钟后我会再做一次。我认为在那种情况下会有裁员。我想问一下您对这种情况的看法:您将如何处理它?

您需要非常仔细地考虑如何识别自上次同步周期以来已更改的数据。如果每一行数据都有一个“上次更新”的时间戳(即索引),那么您可以编写一个进程,依次从每个表中选择最近更新的行。这对原始数据库(MS Access)来说可能有点沉重,而且您仍然需要在MySQL数据库中标识要替换的对应行(需要替换的地方)。当然,您可以在不同的更改计划中放置不同的表。例如,美国各州表可能不会每年更改一次,但您的客户订单表(或问答表)可能会在五分钟内更改很多


有些数据库管理系统有其他机制,特别是在它们自己的副本之间工作。某些DBMS还提供一种有时称为“更改数据捕获”(CDC)的机制,允许您获取更改的数据。有时,在拥有“事务日志”或“逻辑日志”(但不包括CDC或类似文件)的DBMS中,您可以“挖掘”日志文件(或日志备份)以查找更改。但是,日志通常针对DBMS内部恢复过程进行优化,而不是供您使用。

显然,您必须跟踪已处理的数据项(可能位于不同的元数据空间/数据存储中),以避免冗余。元数据应用于筛选出已从源处理的记录。元数据中的逻辑和所需内容将取决于此处的确切用例。

如果可能,您应该避免在这种情况下使用两个数据库

查找有关链接表管理器的信息——Access使用的数据不必存储在Access中

如果必须这样做,请参阅关于使用/升级Access 2010和使用数据宏(触发器),将新的/更改的数据放入临时表中,在复制数据后将其清除。

在一条评论中,您说“我不知道如何用ODBC替换本机表”

这是阻止您将数据整合到MySQL中的一个集合中的唯一障碍吗?如果是这样,请尝试以下建议来设置MySQL表的ODBC链接

如果您还没有MySQL的ODBC驱动程序,请安装该驱动程序。最新版本可在以下位置获得:

从Windows ODBC数据源管理员处为MySQL数据库创建DSN(数据源名称)

创建一个新的Access数据库,并使用DSN创建链接,并提供网页链接@jmoreno的指导

如果链接表的访问名不同于您最初用于本机访问表的名称,请将其更改为与这些原始名称匹配

然后,您可以从旧的Access应用程序导入表单、查询、报告等。理想情况下,一切都将正常工作,因为Access将找到它需要的表名,而不关心它们是否是外部表而不是本机表。但是,您需要解决Access和MySQL之间的任何数据类型不兼容问题

在使用Access应用程序的每台机器上都需要MySQL ODBC驱动程序。就我个人而言,我更愿意处理这个问题,而不是在单独访问和MySQL数据存储之间进行同步。(YMMV)


准备部署时,可以将ODBC链接转换为无DSN的连接,这样客户端机器就不需要分别配置DSN。有关详细说明,请参见Doug Steele的《访问MVP》。

那么,先生,在这种情况下,它只取决于程序?为了避免冗余?直接将销售数据输入MySQL,而不是通过Access db文件。如果您有一个基于Access表单的数据输入应用程序,请将本机(Jet/ACE)表替换为指向MySQL对应表的ODBC链接。保持两组独立的数据同步不再有问题了。@HansUp:先生,我不知道如何用ODBC替换本机表。。我的想法是,我将创建一个程序,可以从Ms Access获取数据,然后将其放入web服务器(MySQL)的数据库,以便通过internet访问。先生。这和我的问题有关吗?你能详细介绍一下CDC吗@乔纳森·莱夫勒