如何在一个访问数据库中归档多个表中的记录

Posted

技术标签:

【中文标题】如何在一个访问数据库中归档多个表中的记录【英文标题】:How to archive records in multiple tables within one access database 【发布时间】:2015-02-05 15:24:49 【问题描述】:

我有一个数据库,其中包含过去 4-5 年的数据。数据库已经变得非常大,使用该数据库的应用程序的运行速度非常缓慢。我希望从所有表中存档一些数据。这个数据库有 16-17 个表,它们之间有关系,我正在寻找一种方法来执行存档操作,以便我可以存档/删除数据几年。我尝试阅读有关 APPEND 和 DELETE 查询的信息,但我不确定如何将它们应用于多个表。

另一个问题是这个应用程序是由其他人创建的,我对数据库和表的结构方式没有足够的了解。非常感谢任何帮助/建议。

【问题讨论】:

这里没有足够的信息来回答这个问题,因为和你一样,我们也是这个数据库的新手,但看不到它。您可以“存档”数据,但这真的是您想要的吗?为什么它慢是更大的问题。数据是否通过网络传输?数据是从需要很长时间运行的复杂查询中表示出来的吗?数据库有多大?最大的表有多大(记录和列)?连接看起来像什么?您可以看到,除了“归档”旧数据之外,还有很多其他功能,因为您可能不想删除任何内容。 如何将数据库复制为“存档”,然后从当前数据库中删除旧数据? 你试过反编译数据库吗? 【参考方案1】:

您需要做的第一件事是了解您的数据集。如果您真的“对数据库和表的结构方式缺乏足够的了解”,那么您将面临巨大的失败。

最重要的部分是确定表是如何相互关联的。如果最初的设计者有能力,他应该在数据库中建立关系并强制引用完整性。您需要查看这些关系(转到数据库工具选项卡并选择关系),或确定您的数据之间应该存在哪些关系。

确定数据的关联方式后,您需要设置新的存档表以镜像您希望存档的所有表。最简单的方法是右键单击表格,然后右键单击窗格中的其他位置并选择“粘贴”。您将得到一个如下所示的框:

选择“仅结构”,因为您只想设置表格。我会给它们与原始表相同的名称,并在末尾添加“_Archive”。这样,就可以轻松确定您正在使用哪些表。

接下来,确定哪些是您的“父”表,哪些是您的“子”表。为此,您可以确定哪些字段包含彼此之间的关系,以及它们之间的关系。任何具有一对多关系的表都可以被视为“One”方的“Parents”,以及“Many”方的“Children”。

在此之后,您需要确定您希望如何归档。通常,您的表格中有一些日期字段可以用作指导。例如,假设您有一个名为“订单日期”的字段。您可以选择归档任何订单日期为 2010 年 1 月 1 日之前的任何内容。因此,为此,您需要编写一个 Append 查询。您会将订单日期

之后,您将编写删除查询。基本上与上面的过程相同,但是您正在从原始表中删除,因为数据已经写入您的存档表。您必须首先从子表中删除。然后对父表执行相同的操作。

您现在可以将所有存档表移动到一个新数据库中,并将其压缩以最小化空间。完成后,您可以修复和压缩数据库,并且大小应该会小得多。

永远记得先复制一份!如果您犯了任何错误,则无法撤消它们。创建副本可让您返回并重试,而不会丢失任何数据。

【讨论】:

我需要做同样的事情,并且与您所说的非常相似。很有帮助的答案!关于您的倒数第三段,他不能只是从父级级联删除吗?

以上是关于如何在一个访问数据库中归档多个表中的记录的主要内容,如果未能解决你的问题,请参考以下文章

如何通过vba查看访问表中的记录集?

如何从PHP中的URL获取多个同名参数并将所有记录插入表中

如何在Access中使用子表单时编辑现有记录而不创建新记录?

当嵌套表属于记录类型时,如何将数据填充到 Oracle 中的嵌套表中

假设一个表中有多个列有 1000 条记录,如何在整个表中查找重复记录? [复制]

使用POI读取EXCEL中的数据如何获得表中实际数据的行数?