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