可以通过定期存档旧记录或非活动记录来保持 Microsoft Access 数据库的组织和可管理性。 可以存档数据库中的所有表、特定表或仅存档特定记录,例如,早于特定日期的记录。 本主题说明如何使用三个不同的选项来存档 Access 数据库中的数据。
本文内容
何时应考虑存档?
如果计算机上的数据库包含你不再打算使用的数据,但你希望使数据方便,以防你在某个时间点确实需要它,或者为了满足数据保留策略,存档是保留此类数据的好方法。 存档还通常用于根据日期条件(例如在月末)保留数据。
存档数据的方法
下表列出了用于存档数据的方法、方法的说明、何时应使用每种方法的说明以及该方法的其他特定注意事项。
方法 |
说明 |
使用场景... |
其他注意事项 |
定期创建特定表的存档副本,并将该表替换为新的空表副本。 |
表中的所有记录都满足用于确定是否存档的条件。 示例:你有一个存储每日极端温度的表。 每年,你都会存档该表,然后从一个空表重新开始。 |
|
|
定期创建后端数据库的存档副本,然后将后端数据库替换为新的空数据库。 需要拆分数据库 (数据库,其中包括:包含所有表的后端数据库文件;和一个前端数据库文件,该文件包含) 的所有其他数据库对象。 |
数据库中大多数表中的所有记录都满足确定是否存档的条件。 示例:数据库由具有不同类型的气象数据的多个表组成。 每年对所有表进行存档。 |
|
|
定期运行一个查询,该查询选择要存档的记录,并将数据添加到存档表,然后运行查询以从原始表中选择 (相同的记录) 并删除它们。 |
表中的某些记录满足用于确定是否存档的条件。 示例:如果签入日期至少为一年,则希望存档库事务 (检查) 。 |
警告: 如果需要在查询中使用参数,则应创建一个窗体来处理参数。 否则,将面临数据丢失的风险。 |
处理引用完整性
如果要存档的记录与其他表中的记录相关,则可能必须解决关系问题。 如果要存档的记录是“子”记录, (它们属于 一对多关系 ) 的“多”端,则可以放心地存档它们。 如果要存档的记录是“父”记录 (它们属于 一对多关系 ) 的“一”端,则当您存档它们时,其相关“子”记录可能会:
-
阻止删除“父”记录。 如果已将“父”记录追加到存档表,则可能会导致问题。
- 或 -
-
成为“孤立者”- 属于不存在的“父级”的记录。 这可能会导致使用“孤立”记录的数据库中的数据完整性和功能出现问题。
若要考虑引用完整性,请执行以下步骤:
-
确定哪些“子”记录属于要存档的记录。 例如,若要存档在库中借出的资产记录,请首先确定这些资产上是否打开了任何事务,即资产是否已签出但未返回。
-
执行下列操作之一:
-
如果始终可以安全删除“子”记录,请确保关系强制实施引用完整性,并级联删除。 这可确保删除所有相关的“子”记录。
-
如果“子”记录不能始终安全删除,请考虑存档数据库中的所有表。
-
Create选择没有“子”记录的“父”记录的查询。 然后,使用第一个查询创建存档查询 (请参阅 定期将记录移动到存档表) 部分,而不是使用“父”表。
-
定期替换表
如果要存档表中的所有数据,可以定期将表替换为空副本。
重要: 如果存档的表与其他表相关,则可能需要 解决引用完整性问题。
-
在导航窗格中,选择要存档的表,按 Ctrl+C,然后按 Ctrl+V。
-
在“ 将表粘贴为 ”对话框中的“ 粘贴选项”下,选择“ 仅结构”,然后单击“ 确定”。
Access 将副本命名为 原始表名称的副本。 -
在导航窗格中,右键单击原始表,然后单击快捷菜单上的“ 重命名 ”。
为表指定另一个名称以指示其包含的内容,例如“DailyTemperatureExtremes_archive_2019”。 -
在导航窗格中,右键单击空副本,然后单击快捷菜单上的“ 重命名 ”。 使用原始表的名称重命名它。
定期替换所有表
如果使用拆分数据库,可以通过将后端数据库替换为空副本来定期替换所有表。
为此,请先准备空副本。 除非数据库的设计发生更改,否则每次存档时都可以重复使用此空副本。 若要存档,只需重命名现有后端数据库以指示它是存档,并将空副本另存为新的后端数据库。
准备后端数据库的空副本
首先,导入后端数据库中所有表的表定义。
-
在“文件”选项卡上,单击“新建”,选择“空白数据库”,然后单击“Create”。
-
关闭 Table1。
-
在“ 外部数据 ”选项卡上的“ 导入 & 链接 ”组中,单击“ 访问”。
-
在 “获取外部数据 – 访问数据库 ”对话框中,选择“ 将表、查询、窗体、报表、宏和模块导入当前数据库”,然后单击“ 浏览”。
-
在“ 文件打开 ”对话框中,选择后端数据库。 单击“ 打开 ”关闭“ 文件打开 ”对话框,然后单击“ 确定”。
-
在“ 导入对象 ”对话框中,单击“ 选项”。
-
在 “导入表”下,选择“ 仅定义”。
-
在“ 表 ”选项卡上,依次单击“ 全选”、“ 确定”和“ 关闭”。
将数据添加到空副本中的任何查阅表
对于每个查找表,请执行以下步骤:
-
链接到现有后端数据库中的查阅表。
-
Create追加查询,该查询会将原始记录中的所有记录添加到副本。
将后端数据库替换为空副本
首先,重命名现有后端数据库,以指示它现在是存档数据库。 然后,打开空副本,并使用原始后端数据库名称保存它。
-
单击“ 文件 ”选项卡,然后单击“ 将数据库另存为”。 系统可能会提示关闭所有打开的对象;如果是,请单击“ 确定”。 “ 另存为 ”对话框随即打开。
-
在) “另存为”对话框顶部的“保存位置”框中 (,请确保将文件保存在与原始后端数据库相同的位置。
-
在“ 文件名 ”框中,输入原始后端数据库的名称。
-
在 “保存类型 ”框中,选择“ Access Database (*.accdb) ”。
定期将记录移动到存档表中
这是一个四步过程,需要创建包含要存档的记录的表的空副本,创建追加查询以将记录从原始表复制到存档表,创建 删除查询 以从原始表中删除存档记录,最后创建一个宏来运行两个可在要存档时运行的查询。 如果按照下面显示的步骤进行操作,则这一看似复杂的过程可能很简单:
步骤 1:Create存档表
若要将所有存档记录保存在一个表中,请执行此步骤一次。 在此步骤中创建的存档表将保存所有存档记录。
若要在创建新存档表时删除旧存档表,可以使用 生成表查询 将数据复制到存档表,而不是执行此步骤。 为此,请跳到 步骤 2。
若要在每次存档时使用新的存档表,但还要保留旧存档表,请在创建新存档表之前重命名旧存档表。 如果要基于日期进行存档,请考虑根据旧存档表表示的日期范围命名。
-
在导航窗格中,选择要存档的记录的表,按 Ctrl+C,然后按 Ctrl+V。
-
在“ 表名称 ”框中,删除“ 复制” 一词,在现有表名称中追加下划线和“存档”一词,然后单击“ 确定”。 例如,如果原始表名为 Transactions ,则存档表名为 Transactions_archive。
-
在“ 粘贴表为 ”对话框中的“ 粘贴选项”下,选择“ 仅结构”。
步骤 2:Create追加查询将数据复制到存档表
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
添加包含要存档的记录的表。
-
在查询设计窗口中,双击刚添加的表中的星号 (*) 。 表名称和星号显示在查询设计网格的第一列中。
注意: 星号指示查询应在查询输出中包含表中的所有字段。 使用星号时,如果在表中添加或删除了字段,查询输出会相应地进行调整。
-
在查询设计窗口中,双击要用于指定要在存档记录之前应满足的条件的字段。 例如,如果 Transactions 表有一个名为 “签入日期”的字段,并且你希望存档该日期超过一年的所有记录,则双击该字段,它将显示在查询设计网格的下一个空列中。
如果要对其他字段使用条件,请重复此步骤。
-
使用 “条件” 行为刚添加的字段指定条件。 例如,可以使用“条件”行中的表达式 <#1/1/2019# 指定“签入日期必须早于 2019 年 1 月 1 日”。
如果条件值在每次存档时都发生更改,则应让查询请求输入。 为此,请使用 “条件” 行中的 参数,以便查询请求输入。 若要使用参数,请像平时一样使用表达式,但不要使用指定的值,而是使用用方括号括起来的简短问题。 例如,可以使用表达式 <[在之前完成的存档事务:],如下所示:
有关使用参数的详细信息,请参阅 查询简介一文。
你可能还希望使用 或 行来指定备用条件。 有关使用条件的详细信息,请参阅查询条件示例一文。
提示: 如果使用日期字段指定条件,并且想要存档早于当前日期的所有记录,请在 日期字段的“ 条件 ”行中输入<日期 () 。
-
执行下列操作之一:
如果已创建存档表,请使用追加查询将指定的记录添加到该表:
-
在“设计”选项卡上的“查询类型”组中,单击“追加”。
-
在“ 追加 ”对话框的“ 表名称 ”框中,选择存档表的名称,然后单击“ 确定”。
在查询设计网格中,将显示 “追加到” 行。
-
清除用于指定条件的任何字段的 “追加到 ”行。 (只有星号应具有 Append To.)
如果尚未创建存档表,请使用生成表查询通过指定的记录创建存档表:
-
在“设计”选项卡上的“查询类型”组中,单击“生成表”。
-
在“ 生成表 ”对话框的“ 表名称 ”框中,键入存档表的名称,然后单击“ 确定”。
-
-
按 Ctrl+S 保存该查询。
步骤 3:Create删除查询以从原始表中删除数据
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
添加包含要存档的记录的表。
-
在查询设计窗口中,双击刚添加的表中的星号 (*) 。 表名称和星号显示在查询设计网格的第一列中。
-
在查询设计窗口中,双击用于在追加查询中指定条件的相同字段。
-
使用 “条件” 行为刚添加的字段指定条件。 有关使用条件的详细信息,请参阅查询条件示例一文。
重要: 如果追加查询或生成表查询使用参数,请确保删除查询也这样做。 另请记住,为这两个查询输入相同的值。 如果输入不同的参数值,可能会丢失数据。 为了帮助防止数据丢失,请考虑使用窗体来收集值,并使查询向表单询问输入值。 有关详细信息,请参阅 查询简介一文。
-
在“ 设计 ”选项卡上的“ 查询类型 ”组中,单击“ 删除”。
“删除”行显示在查询设计网格中。
-
按 Ctrl+S 保存该查询。