Если у вас есть данные к проекту, вынесенные во внешнюю базу данных, мы рекомендуем импортировать их во встроенную базу данных AnyLogic для последующего использования в модели посредством запросов к таблицам базы данных AnyLogic.
В зависимости от типа вашей БД, следуйте одной из инструкций, приведенной ниже:
Как импортировать из файла MS Excel или MS Access
- В панели Проекты щелкните правой кнопкой мыши по элементу модели База Данных и выберите Импортировать таблицы БД... из контекстного меню.
- Вы увидите диалоговое окно Импортировать таблицы БД.... Сначала выберите файл базы данных в панели Задайте настройки соединения, которая находится слева.
- В выпадающем списке Тип, оставьте значение по умолчанию: Excel/Access.
- Нажмите на кнопку Выбрать. Появится диалоговое окно Открыть.Найдите файл MS Excel / MS Access, который содержит данные. Щелкните по файлу два раза или выделите его и нажмите на кнопку Открыть чтобы выбрать файл.
- После этого, установите соединение с выбранным файлом. Нажмите на кнопку Показать список таблиц. AnyLogic постарается подключиться к указанной базе данных и показать список таблиц внешней базы данных в правой панели диалогового окна.
- В панели Выберите таблицу, которую вы будете импортировать установите флажки напротив таблиц, которые вы хотите импортировать в базу данных. На данном этапе вы можете изменить имена таблиц во встроенной базе данных AnyLogic (в столбце Имя в БД модели).
- Если вы предполагаете обновление данных во внешней БД, и хотите всегда иметь свежие данные в вашей модели, выберите опцию Обновлять данные при запуске модели. После выбора этой настройки, AnyLogic будет обновлять данные из внешней базы данных каждый раз, когда пользователь запускает модель. Вы можете выключить авто обновление в свойствах базы данных.
- В случае, когда таблицы с такими именами уже существуют в базе данных AnyLogic, вы увидите уведомление подобное тому, что изображено на скриншоте ниже. Вы можете либо заменить существующие таблицы теми, что из внешней базы данных, либо оставить существующие таблицы и использовать другие имена для импортируемых таблиц.
- Нажмите на кнопку OK. В панели Проекты разверните дерево элемента База Данных и вы увидите список таблиц, добавленных в AnyLogic.
Чтобы импортировать данные из таблицы Excel во внутреннюю базу данных модели
В AnyLogic вы можете заполнить таблицу во внутренней базе данных модели значениями из внешнего Excel-файла, используя любое из доступных кодовых полей — например, тело функции или действие агента.
Чтобы сделать это:
-
Получите доступ ко внутренней базе данных модели, создав экземпляр объекта ModelDatabase:
ModelDatabase modelDB = getEngine().getModelDatabase();
-
С помощью конструктора класса Database задайте местоположение нужного Excel-файла, например:
Database myFile = new Database(this, "A DB from Excel", "D:\Files\myDBFile.xls")
В данном конструкторе объекта Database первый аргумент (this) указывает на владельца данной базы данных (агента или эксперимент), второй ("A DB from Excel") — опциональное имя для базы данных для вашего удобства. Последний аргумент — это имя файла.
Вам нет необходимости каждый раз указывать абсолютный путь до файла — сработает и относительный. Кроме того, вы можете воспользоваться различными прикладными элементами интерфейса, чтобы люди, работающие с моделью, могли указывать разные файлы. Например, для этой цели подойдет элемент выбора файла. -
Наконец, вызовите функцию importFromExternalDB():
modelDB.importFromExternalDB(myFile.getConnection(), "Sheet 1", "Internal DB - Excel Sheet 1", true, false);
Эта функция использует объект Connection (соединение с базой данных), который получается в результате вызова метода getConnection(). Второй аргумент ("Sheet 1") указывает имя листа в файле Excel, который вы собираетесь экспортировать. Третий ("Internal DB - Excel Sheet 1") — указывает имя целевой таблицы во внутренней базе данных модели. true в 4-м аргументе сообщает о необходимости очистить содержимое целевой таблицы перед выполнением метода. Последнее false означает, что процесс копирования не будет обработан, как полноценная транзакция с базы данных (что в некоторых случаях может приводить к проблемам с производительностью).
Если вам необходимо получить данные нескольких листов, повторите вызов функции и укажите имя другого листа в том же файле. -
После выполнения кода, описанного выше, указанная таблица во внутренней база данных модели будет наполнена значениями с листа Excel.
Вы можете использовать обычные запроса к базе данных, чтобы взаимодействовать с ними по необходимости.
Как импортировать из БД MS SQL Server
- В панели Проекты щелкните правой кнопкой мыши по элементу модели База Данных и выберите Импортировать таблицы БД... из контекстного меню.
- Вы увидите диалоговое окно Импортировать таблицы БД.... Сначала выберите файл базы данных в панели Задайте настройки соединения, которая находится слева.
- В выпадающем списке Тип выберите Сервер Microsoft SQL.
- Укажите хост в поле Хост, а в поле Имя базы данных укажите имя БД, к которой хотите получить доступ.
- Введите Логин и Пароль если их будет требовать БД.
- После этого, установите соединение с выбранным файлом. Нажмите на кнопку Показать список таблиц. AnyLogic постарается подключиться к указанной базе данных и показать список таблиц внешней базы данных в правой панели диалогового окна.
- В панели Выберите таблицу, которую вы будете импортировать установите флажки напротив таблиц, которые вы хотите импортировать в базу данных. На данном этапе вы можете редактировать автоматически созданные имена таблиц, которые будут созданы в базе данных AnyLogic (в столбце Имя в БД модели).
- Если вы предполагаете обновление данных во внешней БД, и хотите всегда иметь свежие данные в вашей модели, установите флажок напротив опции Обновлять данные при запуске модели. После выбора этой настройки, AnyLogic будет обновлять данные из внешней базы данных, когда запущенная модель впервые обращается к БД. Вы можете выключить авто-обновление в свойствах базы данных.
- В случае, когда таблицы с такими именами уже существуют в базе данных AnyLogic, вы увидите уведомление подобное тому, что изображено на скриншоте ниже. Вы можете либо заменить существующие таблицы теми, что из внешней базы данных, либо оставить существующие таблицы и использовать другие имена для импортируемых таблиц.
- Нажмите на кнопку OK. В панели Проекты разверните дерево элемента База Данных, чтобы увидеть список таблиц, добавленных в AnyLogic.
-
Как мы можем улучшить эту статью?
-