Архивация данных Access

Применяется к
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Вы можете упорядочить базы данных Microsoft Access и управлять ими, периодически архивируя старые или неактивные записи. Можно архивировать все таблицы базы данных, определенные таблицы или только определенные записи, например записи, предшествующие определенной дате. В этой статье описывается, как использовать три различных способа архивации данных в базе данных Access.

В этой статье

Когда стоит задуматься об архивировании?

Если база данных на компьютере содержит данные, которые больше не планируется использовать, но вы хотите, чтобы эти данные были под рукой на случай, если они когда-нибудь понадобятся, или в соответствии с политикой хранения данных, архивация является хорошим способом хранения таких данных. Архивация также часто используется для хранения данных на основе даты (например, в конце месяца).

Способы архивации данных

В следующей таблице перечислены методы архивации данных, описание метода, объяснение, в которых следует использовать каждый из этих способов, а также другие конкретные рекомендации для этого метода.

Метод Описание Используйте, когда... Другие рекомендации
Периодическая замена таблицы Периодически создает архивную копию определенной таблицы и заменяет ее новой копией пустой таблицы. Все записи в таблице удовлетворяют условиям, определяющим необходимость архивации.

ПРИМЕР: У вас есть таблица, в которой хранятся суточные перепады температуры. Каждый год вы архивируете таблицу и начинаете заново с пустой.
Периодическая замена всех таблиц Периодически создавайте архивную копию внутренней базы данных, а затем заменяйте внутреннюю базу данных новой, пустой. Требуется разделенная база данных (база данных, включающая: внутренний файл базы данных, содержащий все таблицы, и внешний файл базы данных, содержащий все остальные объекты базы данных). Все записи в большинстве таблиц базы данных удовлетворяют условиям, определяющим необходимость архивации.

Пример: База данных состоит из нескольких таблиц с различными типами метеорологических данных. Каждый год вы архивируете все таблицы.
  • Если у вас есть таблицы подстановки (таблицы, используемые для хранения значений для поиска, такие как почтовые индексы или отделы), может потребоваться импортировать эти данные в новую внутреннюю базу данных.
  • Архивировать базу данных необходимо вручную. В этом методе нельзя использовать макрос.
Периодическое перемещение записей в архивную таблицу Периодически запускает запрос, выбирающий записи для архивации и добавляющий данные в архивную таблицу, после чего выполняется запрос, чтобы выбрать те же записи (из исходной таблицы) и удалить их. Некоторые записи в таблице удовлетворяют условию, используемому для определения необходимости архивации.

ПРИМЕР. Вы хотите архивировать библиотечные транзакции (проверки), если дате регистрации не менее года.
  • Возможно, придется позаботиться о целостности данных, особенно если архивируемые записи находятся на одной стороне отношения "один-ко-многим". Дополнительные сведения см. в разделе « Работа с целостностью данных ».

Предупреждение: Если вам нужно использовать параметры в запросах, вы должны создать форму для обработки этих параметров. В противном случае существует риск потери данных.

Обеспечение целостности данных

Если записи, которые нужно архивировать, связаны с записями других таблиц, возможно, потребуется обойти эту связь. Если архивируемые записи являются "дочерними" (они относятся к стороне "многие" отношения "один-ко-многим"), вероятно, их можно спокойно архивировать. Если архивируемые записи являются "родительскими" (они относятся к стороне "один" отношения "один-ко-многим"), при их архивации связанные с ними "дочерние" записи могут:

  • Предотвращает удаление "родительских" записей. Это может вызвать проблемы, если вы уже добавили "родительские" записи в архивную таблицу.
    • Или -
  • становятся «потерянными» записями, принадлежащими несуществующему «родителю». Это может вызвать проблемы с целостностью и функциональностью базы данных, использующей потерянные записи.

Чтобы обеспечить целостность данных, выполните следующие действия.

  1. Определите, какие "дочерние" записи относятся к архивируемым записям. Например, чтобы архивировать записи об активах, которые выданы во временное пользование в библиотеке, сначала определите, открыты ли какие-либо транзакции с этими активами, т. е. были ли активы извлечены, но не возвращены.

  2. Выполните одно из следующих действий:

    • Если "дочерние" записи всегда можно безопасно удалить, убедитесь, что связь обеспечивает целостность данных с каскадным удалением. Это гарантирует удаление всех связанных "дочерних" записей.
    • Если "дочерние" записи не всегда могут быть безопасно удалены, рассмотрите возможность архивации всех таблиц в базе данных.
    • Создайте запрос, который выбирает "родительские" записи, которые не имеют "дочерних" записей. Затем используйте этот первый запрос для создания запросов архивации (см. раздел "Периодическое перемещение записей в архивную") вместо использования "родительской" таблицы.

К началу страницы

Периодическая замена таблицы

Если вы хотите архивировать все данные таблицы, периодически заменяйте таблицу пустой копией.

Важно

Если архивируемая таблица связана с другими таблицами, возможно, придется позаботиться о целостности данных.

  1. В области навигации выберите таблицы, которые нужно архивировать, нажмите клавиши CTRL+C, а затем нажмите клавиши CTRL+V.

  2. В диалоговом окне "Вставить таблицу как" в разделе "Параметры вставки" выберите "Только структура" и нажмите кнопку "ОК".

    Access называет копию копией исходного имени таблицы.

  3. В области навигации щелкните исходную таблицу правой кнопкой мыши и выберите в контекстном меню команду "Переименовать ".

    Присвойте таблице другое имя, чтобы указать, что она содержит, например "DailyTemperatureExtremes_archive_2019".

  4. В области навигации щелкните правой кнопкой мыши пустую копию и выберите в контекстном меню команду "Переименовать ". Переименуйте ее, указав имя исходной таблицы.

К началу страницы

Периодическая замена всех таблиц

Если вы используете разделенную базу данных, вы можете периодически заменять все таблицы, заменяя внутреннюю базу данных пустой копией.

Для этого сначала подготавливают пустую копию. Если структура базы данных не изменится, можно повторно использовать эту пустую копию при каждой архивации. Для архивации просто переименуйте существующую внутреннюю базу данных, чтобы указать, что она является архивом, и сохраните пустую копию как новую внутреннюю базу данных.

Подготовка пустой копии внутренней базы данных

Сначала импортируйте определения всех таблиц во внутренней базе данных.

  1. На вкладке "Файл " нажмите кнопку "Создать", выберите пункт "Пустая база данных" и нажмите кнопку "Создать".
  2. Закрыть таблицу 1.
  3. На вкладке "Внешние данные " в группе "Импорт & связь " нажмите кнопку Access.
  4. В диалоговом окне "Внешние данные — база данных Access" выберите "Импорт таблиц, запросов, форм, отчетов, макросов и модулей в текущую базу данных" и нажмите кнопку "Обзор".
  5. В диалоговом окне "Открытие файла " выберите внутреннюю базу данных. Нажмите кнопку "Открыть", чтобы закрыть диалоговое окно "Открытие файла", а затем нажмите кнопку ОК.
  6. В диалоговом окне "Импорт объектов " нажмите кнопку "Параметры".
  7. В разделе "Импорт таблиц" выберите "Только определение".
  8. На вкладке "Таблицы " нажмите кнопку " Выделить все", нажмите кнопку "ОК" и кнопку "Закрыть".

Добавьте данные в все таблицы подстановки в пустой копии

Для каждой таблицы подстановки сделайте следующее:

  1. Создать связь с таблицей подстановки в существующей серверной базе данных.
  2. Создайте запрос на добавление, который добавляет все записи исходного файла в копию.

Замена внутренней базы данных пустой копией

Сначала переименуйте существующую серверную базу данных, чтобы указать, что она теперь является архивом. Затем откройте пустую копию и сохраните ее, используя исходное имя серверной базы данных.

  1. На вкладке "Файл " нажмите кнопку "Сохранить базу данных как". Вам может быть предложено закрыть все открытые объекты; В этом случае нажмите кнопку "ОК". Откроется диалоговое окно "Сохранить как ".
  2. Убедитесь, что файл сохраняется в том же месте, что и исходная внутренняя база данных в окне " Сохранить как" (в верхней части диалогового окна " Сохранить как ").
  3. В поле File Name (Имя файла ) введите имя исходной серверной базы данных.
  4. В поле "Тип файла" выберите "База данных Access" (*.accdb).

К началу страницы

Периодическое перемещение записей в архивную таблицу

Этот процесс состоит из четырех этапов: нужно создать пустую копию таблицы, содержащей записи, которые нужно архивировать, создать запрос на добавление для копирования записей из исходной таблицы в архивную таблицу, создать запрос на удаление для удаления архивированных записей из исходной таблицы и, наконец, создать макрос для выполнения обоих запросов, который можно выполнять при архивации. Этот, казалось бы, сложный процесс может оказаться легким, если следовать шагам в порядке, в котором они представлены ниже:

Шаг 1. Создание архивной таблицы

Шаг 2. Создание запроса на добавление для копирования данных в архивную таблицу

Шаг 3. Создание запроса на удаление данных из исходной таблицы

Шаг 4. Создание макроса для выполнения запросов на добавление и удаление

Шаг 1. Создание архивной таблицы

Чтобы сохранить все архивные записи в одной таблице, проделайте это действие один раз. В таблице архива, созданной на этом этапе, будут храниться все архивированные записи.

Чтобы удалить старую архивную таблицу при создании новой, вместо этого можно использовать запрос на создание таблицы, чтобы скопировать данные в архивную таблицу. Для этого перейдите к шагу 2.

Чтобы использовать новую архивную таблицу при каждом архивировании, а также сохранить старые архивные таблицы, переименуйте старую архивную таблицу перед созданием новой. При архивации по дате старые архивные таблицы можно назвать в соответствии с диапазоном дат, которые они представляют.

  1. В области навигации выделите таблицу, содержащую записи для архивации, нажмите клавиши CTRL+C, а затем нажмите клавиши CTRL+V.
  2. В диалоговом окне "Имя таблицы" удалите слова "Копия" и добавьте символ подчеркивания и слово "архив" к существующему имени таблицы, а затем нажмите кнопку "ОК". Например, если исходная таблица называется "Транзакции ", архивная таблица будет называться Transactions_archive.
    Вставка таблицы
  3. В диалоговом окне "Вставить таблицу как " в разделе "Параметры вставки" выберите "Только структура".

Шаг 2. Создание запроса на добавление для копирования данных в архивную таблицу

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.

  2. Добавьте таблицу с записями, которые нужно архивировать.

  3. В окне конструктора запросов дважды щелкните звездочку (*) рядом с таблицей, которую вы только что добавили. Имя таблицы и звездочка появятся в первом столбце бланка запроса.

    Примечание

    Звездочка означает, что запрос должен включать все поля из таблицы в выходных данных запроса. При использовании звездочки при добавлении или удалении полей из таблицы выходные данные запроса соответствующим образом изменяются.

  4. В конструкторе запросов дважды щелкните поле, которое нужно использовать для указания условия, которому должны удовлетворять записи, перед их архивацией. Например, если в таблице "Транзакции" есть поле "Проверенная дата" и вы хотите архивировать все записи, которым больше года, дважды щелкните это поле, и оно появится в следующем пустом столбце бланка запроса.
    Бланк запроса
    Повторите этот шаг, если хотите использовать условия с дополнительными полями.

  5. Используйте строку "Условия ", чтобы указать условия для только что добавленных полей. Например, можно указать, что дата проверки должна предшествовать 1 января 2019 г., используя выражение <#1/1/2019# в строке условий .
    Если значения условий меняются при каждом архивировании, следует запросить ввод данных. Для этого в строке "Условия " используется параметр, с помощью которого запрос запрашивает ввод данных. Чтобы использовать параметр, используйте выражение, как обычно, но вместо указанного значения используйте краткий вопрос в квадратных скобках. Например, можно использовать выражение <[Транзакции архива завершены до:], например:
    Выражение с параметрами
    Дополнительные сведения об использовании параметров см. в статье Общие сведения о запросах.
    Также можно использовать строку "или " для указания альтернативных условий. Дополнительные сведения об использовании условий см. в статье Примеры условий запроса.

    Совет

    Если для задания условий используется поле даты и требуется архивировать все записи, предшествующие текущей дате, введите <Date() в строке Условие отбора для поля даты.

  6. Выполните одно из следующих действий:
    Если архивная таблица уже создана, добавьте в нее указанные записи с помощью запроса на добавление.

    1. На вкладке Разработка в группе Тип запроса выберите команду Добавить.
    2. В диалоговом окне "Добавление" в поле "Имя таблицы" выберите имя архивной таблицы и нажмите кнопку "ОК".
      Добавление записей в таблицу
      На бланке запроса отображается строка "Добавить к ".
    3. Очистите строку "Добавить в " для всех полей, которые использовались для указания условий. (Только звездочка должна иметь значение для Append To.)
      Строка
      Если архивная таблица не создана, создайте архивную таблицу с указанными записями с помощью запроса на создание таблицы:
    4. На вкладке Конструктор в группе Тип запроса нажмите кнопку Создание таблицы.
    5. В диалоговом окне "Создание таблицы" в поле "Имя таблицы" введите имя архивной таблицы и нажмите кнопку "ОК".
  7. Нажмите сочетание клавиш CTRL+S, чтобы сохранить запрос.

Шаг 3. Создание запроса на удаление данных из исходной таблицы

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.

  2. Добавьте таблицу с записями, которые нужно архивировать.

  3. В окне конструктора запросов дважды щелкните звездочку (*) рядом с таблицей, которую вы только что добавили. Имя таблицы и звездочка появятся в первом столбце бланка запроса.

  4. В окне конструктора запроса дважды щелкните те же поля, которые указывали условие в запросе на добавление.

  5. Используйте строку "Условия ", чтобы указать условия для только что добавленных полей. Дополнительные сведения об использовании условий см. в статье Примеры условий запроса.

    Важно

    Если в запросе добавления или создания таблицы используется параметр, убедитесь, что в запросе на удаление используется то же самое. Также помните, что для обоих запросов необходимо ввести одно и то же значение. Если вы вводите другие значения параметров, вы можете потерять данные. Чтобы предотвратить потерю данных, можно использовать форму для сбора значений, а для запросов запрашивать входные значения в форме. Дополнительные сведения см. в статье Общие сведения о запросах.

  6. На вкладке Конструктор в группе Тип запроса нажмите кнопку Удаление.
    На бланке запроса появится строка "Удалить ".
    Строка

  7. Нажмите сочетание клавиш CTRL+S, чтобы сохранить запрос.

Шаг 4. Создание макроса для выполнения запросов на добавление и удаление

  1. На вкладке Создание в группе Макросы и код нажмите кнопку Макрос.
  2. Щелкните стрелку раскрывающегося списка рядом с кнопкой Add New Action (Добавить новое действие) и выберите команду OpenQuery.
    Откроется действие OpenQuery с аргументами.
  3. В поле "Имя запроса " выберите запрос (добавить или создать таблицу), созданный на шаге 2.
  4. Щелкните стрелку раскрывающегося списка рядом с кнопкой Add New Action (Добавить новое действие) и выберите команду OpenQuery.
    Откроется действие OpenQuery с аргументами.
  5. В поле Имя запроса выберите запрос на удаление, созданный на шаге 3.
  6. Нажмите клавиши CTRL+S, чтобы сохранить макрос.
    Если вы хотите архивировать записи, запустите макрос.

К началу страницы