从外部数据库导入数据

您所在的位置:网站首页 仿真的数据 从外部数据库导入数据

从外部数据库导入数据

2024-07-17 03:52| 来源: 网络整理| 查看: 265

仿真模型是基于数据的,当您使用来自外部数据库的数据时,我们建议您将其导入 AnyLogic的内部(内置)数据库。目前使用内置数据库是在 AnyLogic 中处理模型数据最方便、最有效的方式。

首先,许多模型元素具有用于从数据库中检索数据的可视控件。请参阅有关Source 根据 DB 中的时间戳生成智能体的相关文章,了解此类示例。

其次,在模型运行时连接外部数据源可能会影响模型的性能。而内置的数据库可以让您避免这个问题。

在这篇文章中,您将学习如何使用JDBC驱动程序从外部数据库导入数据,以将仿真模型与 PostgreSQL 连接并在 AnyLogic 中创建计划。

连接到外部数据库

只需几次单击,即可从MS Excel/MS Access/MS SQL Server导入数据。但是,如果数据存储在MySQL、Oracle数据库或PostgreSQL之类的数据库中,该怎么办?

首先,您需要建立与外部数据库的连接。下面我们通过实际案例来学习如何做到这一点。

PostgreSQL中的每周计划

假设PostgreSQL存储着员工的每周计划,并且基于此数据,您需要定义资源单元的可用性。

要建立连接,我们建议使用数据库连接工具。 但是,如果没有专门为 PostgreSQL 创建的适当 JDBC 驱动程序,将无法与外部数据库直接连接。

您可以从PostgreSQL的官方网站下载JDBC驱动程序。然后将所有驱动程序文件复制到模型的文件夹中,并将驱动程序的JAR文件(Java存档)导入到模型属性的Dependencies选项卡中。

将 JDBC 驱动程序连接到模型(模型属性中的Dependencies选项卡) 设置数据库连接工具并使用函数

使用 JDBC 驱动程序,您现在可以配置数据库连接工具:

1. 取一个有意义的名字,比如“postgreInput”。

2. 在 JDBC 驱动程序属性中键入org.postgresql.Driver

3. 对于 PostgreSQL,连接 URL 属性采用以下形式之一:

jdbc:postgresql://host/database jdbc:postgresql://host:port/database

参数含义如下:

host — 服务器的主机名。 port — 服务器正在检测的端口号。 PostgreSQL 默认端口号通常是 5432。 database — 数据库名称。

4. 指定数据库的登录名和密码(如果有)。

数据库连接工具的属性

设置数据库连接工具后,可以使用它以编程方式将员工日程数据从PostgreSQL导入AnyLogic内置数据库:

ModelDatabase modelDB = getEngine().getModelDatabase(); Connection sourceConnection = postgreInput.getConnection(); Connection targetConnection = modelDB.getConnection(); try { modelDB.importFromExternalDB(sourceConnection, “schedule_data”, “db_schedule”, true, false); targetConnection.commit(); } catch (Exception e) { targetConnection.rollback(); } finally { targetConnection.setAutoCommit(true); }

在本例中,您将使用ModelDatabase API中的importFromExternalDB()函数:

public void importFromExternalDB(java.sql.Connection sourceConnection, java.lang.String sourceTableName, java.lang.String targetTableName, boolean clearTargetTable, boolean autoCommit)

该函数从外部数据库导入单个表。列类型应匹配或可转换参数:

sourceConnection——外部数据库的连接对象 sourceTableName——外部数据库中要从中复制数据的表(本例中为“schedule_data”) targetTableName——内置数据库中的一个表,数据应复制到该表(本例中为“db_schedule”) clearTargetTable——如果为true,则在复制数据之前清除目标表 autoCommit——如果为 false,此操作将不会打开或提交任何事务(在某些情况下可能会降低性能) 如何制定每周计划?

执行上述代码时,内置数据库中的表(“db_schedule”)将填充PostgreSQL中“schedule_data”表中的值。现在,一切都已准备就绪,可以从内置数据库中检索数据,并在仿真模型中形成每周计划。对此,AnyLogic有一个Schedule元素。

当您使用外部数据源时,选择 Days/Weeks 作为持续时间类型并选中“Loaded from database” Schedule元素设置为从内置数据库中检索数据并形成每周计划

有关创建每周计划的更多信息可参考 AnyLogic 帮助。

在这篇文章中,我们讨论了用户经常遇到的三个问题:如何从MS Excel/MS Access/MS SQL Server以外的外部DB导入数据?如何使用JDBC驱动程序将AnyLogic与数据库(如MySQL或PostgreSQL)连接起来?如何使用内部DB创建每周计划?

我们希望您会发现它对您有帮助!如果您想看到更多我们处理常见技术问题的博客,请在下面的评论中告诉我们。

欢迎您通过公众号和时讯关注我们,即时获取最新资讯!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3