有时需要将数据和数据模型Schema从Postgres转移或迁移到IRIS。目前有几个选择可以做到这一点,但最流行的两个选项是使用DBeaver(https://openexchange.intersystems.com/package/DBeaver)或SQLGateway。第一种方法将在本文中演示,第二种方法在Robert Cemper的一篇优秀文章中介绍,使用 SQLgateway 迁移数据库(https://community.intersystems.com/post/db-migration-using-sqlgateway),请看本文中如何使用DBeaver执行这种迁移。
为迁移过程获取样本数据
在Github上可以下载一个docker compose项目来构建和运行两个数据库。:
- 源数据库: 带有样本数据库的PostgreSQL 数据库 Docker 实例 .
- 目标数据库: 带有Schema就绪接受源数据库的InterSystems IRIS 数据平台Docker 实例.
要获得样本并运行它,请遵循以下步骤:
- 到 https://openexchange.intersystems.com/package/migration-pg-iris-dataset 下载并到 git repository.
- 克隆项目: git clone https://github.com/yurimarx/migration-pg-iris.git.
- 到项目目录 migration-pg-iris.
- 执行build: docker-compose build.
- 运行containers: docker-compose up -d.
- 实例ok后在你的Docker桌面看到:
关于要迁移的数据
要迁移的数据如下所示:
从 PostgreSQL 到 IRIS 的迁移过程将包括:
- 8 个表.
- 1,000,000 行销售数据.
- 250,000 行用户数据.
- 300 行产品.
- 500 行店铺.
- 100 行国家.
- 30 行城市.
- 5 行状态名status_name.
迁移目标为 InterSystems IRIS 中USER 命名空间namespace内的 dc_test schema .
从 PostgreSQL 到 IRIS 的开源迁移工具: DBeaver
DBeaver是一个数据库工具,可以连接、创建、下拉、选择、更新和删除市场上主要数据库产品的数据对象。下载地址:https://openexchange.intersystems.com/package/DBeaver。现在按照安装说明,将这个神奇的产品安装在你的笔记本电脑或桌面。
DBeaver可以用来在数据库连接之间迁移数据,即使它们来自不同的制造商和版本。
使用DBeaver连接源和目标数据库
现在我们将设置要迁移的数据库连接。
在DBeaver里设置PostgreSQL连接:
1. DBeaver 到 文件 File >新建 New.
2. 选择数据库连接并点击下一步:
3. 选择SQL tab > PostgreSQL 点击下一步:
4. 如图填写PostgreSQL 连接项目 :
|
![]() |
在 DBeaver设置IRIS连接:
1. DBeaver 到 文件 File >新建 New.
2. 选择数据库连接并点击下一步:
3. 选择 SQL tab > InterSystems IRIS 并点击下一步:
4. 如果 DBeaver 要求下载InterSystems IRIS 驱动, 点击 Yes 或 Ok.
5. 如图填写InterSystems IRIS 连接项目:
|
![]() |
6. postgres和用户的连接可以在数据库导航器中找到:
开始迁移
执行以下步骤:
1. 打开 postgres connection > public 选择所有表。在选择的表上点击鼠标右键选择导出数据 Export Data, 如图:
2. 如图选择数据库并点击下一步
3. 点击选择按钮:
4. 选择 dc_test 并点击ok.
5. 现在有必要改变目标数据库的一些数据类型配置,因为IRIS和PostgreSQL对整数和小数值使用不同的数据类型。.
6. 展开 public.country 表, 选择第一项 (country_id) 并点击 Columns…
7. 把目标类型从 int4 改成 integer 并点击Ok.
8. 对表重复以上过程
a. public.product.
b. public.status_name.
c. public.users.
d. public.city (把city_id 和 country_id类型改成 integer ).
e. public.store (把 store_id 和 city_id 类型改成 integer ).
f. public.sale (把product_id, user_id 和 store_id类型改成integer,把amount改成 double )
g. public.order_status (把status_name_id 改成 integer).
9. 现在目标数据类型改好了, 点击下一步.
10. 设置获取 Fetch 大小为 1,000,000 并点击下一步.
11. 在Data load数据加载设置中接受默认值并点击下一步.
12. 在确认Confirm页面点击 Proceed.
13. 现在看到在数据库导航器看到在 InterSystems IRIS dc_test schema 下的所有 PostgreSQL表.
对于表来说,迁移过程非常简单,但对于视图、函数、触发器和存储过程,你需要使用ObjectScript或SQL重写SQL源代码。
迁移到 IRIS能得到什么?
总结一下:
- API 管理.
- 可视化报表Visual Reports (IRIS Reports).
- 自动化机器学习AutoML (IntegratedML).
- 多语言应用、数据开发环境(Python, Java, .NET, JavaScript).
- 服务总线ESB.
- BI/Analytics.
- 自然语言处理NLP.
- 微服务开发Microservices development.
- 多模型数据库(SQL, JSON, Analytical Cubes, Object Oriented).
- 数据分片Sharding.
总体来说, 迁移到 IRIS 你得到的是一个数据平台, 其他的你只有一个数据库。