ETL是**Extract(抽取)、Transform(转换)、Load(加载)**的缩写,是数据从源端流向目标端的完整处理流程。
简单来说,ETL做的事情就是:从多个异构数据源中提取数据,经过清洗、转换、标准化处理后,加载到目标数据仓库或数据库中。
ETL流程包含三个核心阶段:
| 阶段 | 功能说明 |
|---|---|
| 抽取(Extract) | 从源端系统(Oracle、MySQL、文件等)读取数据,识别增量或全量数据 |
| 转换(Transform) | 数据清洗(去重、补全)、数据标准化(格式统一)、数据映射(源字段→目标字段)、数据聚合与计算 |
| 加载(Load) | 将转换后的数据写入目标系统,支持全量加载、增量加载、批量写入等策略 |
ETL系统的核心价值在于解决数据孤岛问题。在企业中,业务数据往往分散在不同的数据库、文件系统中,ETL能够将这些分散的数据整合到一个统一的数据仓库中,为BI分析、报表生成、经营决策提供一致的数据基础。
数据仓库构建:将多个业务系统的数据汇聚到数据仓库中,支持企业级数据分析
异构数据库迁移:在系统升级或数据库替换时,完成跨数据库的数据迁移
实时数据同步:将源端增量数据持续同步到目标端,保持数据一致性
数据质量治理:在数据流转过程中完成清洗、去重、标准化操作
通过xftp将dmetl_20230922_x86_linux_64_V4.0.3.64_rev140189.bin安装包传到/opt/dm目录下:
[root@localhost dm]# cd /opt/dm/
[root@localhost dm]# ls
dm8_20260509_x86_centos6_64.iso dm.key
dm8_20260509_x86_centos6_64_sec_8.1.5.8_dmdci.zip dmocci
dm8_20260509_x86_centos6_64_sec_8.1.5.8_symbols.zip dmocci2
DM8 - DCI Program.pdf dmoci
DM8 - dmocci2.README dm.sql
dmarch.ini monitor_dmap.sh
dmdci nmon.dat
dmetl_20230922_x86_linux_64_V4.0.3.64_rev140189.bin sqllog.ini
授予/opt/dm执行权限,并将属主和属组给dmdba:
[root@localhost dm]# chown -R dmdba:dinstall /opt/dm
[root@localhost dm]# chmod -R 755 /opt/dm
开始安装:
[root@localhost dm]# ./dmetl_20230922_x86_linux_64_V4.0.3.64_rev140189.bin -i
Extract install files.........
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:2
1.免费试用达梦数据交换平台
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据交换平台]:
免费试用Key文件限制信息如下:
有效日期:2026-12-01
用户名称:ETL试用用户
版本类型:标准版
数据源数目:无限制
硬件ID:无限制
1.标准版
2.自定义
安装类型[1.标准版]:
1.服务器
2.客户端
所需磁盘空间:1,736 MB
安装目录: [/opt/dmetl]/home/dmdba/dm/dmetl
该路径不为空,是否继续安装?[Y or N]y
安装路径可能存在覆盖安装
正在安装
正在创建快捷方式
安装成功
1.使用内置数据库
2.使用外置数据库
数据库类型:[1.使用内置数据库]:2
1.DM6
2.DM7
3.Oracle
4.SqlServer
5.DB2
6.Mysql
7.DM8
数据库类型:[2.DM7]:7
数据库IP:localhost
数据库端口:5236
数据库名称:默认
用户名:SYSDBA
使用默认连接信息?[Y or N]y
密码:Sysdba%_025
初始化元数据库[Y or N]:y
导入示例工程[Y or N]:n
正在检测初始化环境
正在配置元数据库信息
正在初始化元数据库
达梦数据交换平台服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建达梦数据交换平台服务
达梦数据交换平台 V4.0 安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dm/dmetl/log/install.log
需修改/home/dmdba/dm/dmetl/server/dmetl_svc.conf
[root@localhost dm]# cd /home/dmdba/dm/dmetl/server/
[root@localhost server]# ls
configuration dmetl_service_restart.sh dmetl_service_stop.sh dmetl_stop.sh drivers
dmetl dmetl_service_start.sh dmetl_start.sh dmetl_svc.conf dropins
[root@localhost server]# vi dmetl_svc.conf
修改wrapper.ping.timeout:
wrapper.ping.timeout=10
将/home/dmdba/dm/dmetl/server/drivers/下的Dm8JdbcDriver.jar
替换为目的库/home/dmdba/dm/dmdbms/drivers/jdbc下的DmJdbcDriver8.jar
[root@localhost server]# cd /home/dmdba/dm/dmetl/server/drivers/
[root@localhost drivers]# ls
commons-lang-2.6.jar ImpalaJDBC41.jar
commons-logging-1.2.jar infobright-mysql.jar
db2jcc.jar informix.jar
db2jcc_license_cu.jar jackcess-2.0.9.jar
derbyclient.jar jconn3.jar
derby.jar jdbcT4-2.4.0.jar
derbyLocale_zh_CN.jar kingbase8jdbc.jar
derbynet.jar kingbasejdbc.jar
Dm4JdbcDriver.jar mariadb.jar
Dm5JdbcDriver.jar mpp-connector-java-8.3.81.51-build-53.2-bin.jar
Dm6JdbcDriver.jar mysql-connector-java-5.1.46.jar
Dm7JdbcDriver.jar mysql-connector-java-5.1.8.jar
Dm8JdbcDriver.jar ojdbc6-12c.jar
gbase-connector-java-8.3.81.51-build1.0-bin.jar oracle9.jar
Hive oracle.jar
hsqldb.jar oscarJDBC.jar
ifx10jdbc.jar postgreSQL.jar
ifx10jdbcx.jar sqljdbc2000.jar
ifx10lang.jar sqljdbc41.jar
ifx10lsupp.jar sqljdbc4.jar
ifx10sqlj.jar sqljdbc.jar
ifx10tools.jar tdgssconfig.jar
ifx12jdbc.jar terajdbc4.jar
ifx12lang.jar ucanaccess-2.0.9.4.jar
ifx12lsupp.jar updb6.jar
ifx12tools.jar vertica-jdbc.jar
[root@localhost drivers]# mv Dm8JdbcDriver.jar Dm8JdbcDriver.jar_bak
[root@localhost drivers]# cd /home/dmdba/dm/dmdbms/drivers/jdbc/
[root@localhost jdbc]# ls
dialect DmJdbcDriver11.jar DmJdbcDriver7.jar readme.txt
dm8-oracle-jdbc-jre6-wrapper.jar DmJdbcDriver6.jar DmJdbcDriver8.jar
[root@localhost jdbc]# cp DmJdbcDriver8.jar /home/dmdba/dm/dmetl/server/drivers/Dm8JdbcDriver.jar
[root@localhost jdbc]# cd /home/dmdba/dm/dmetl/server/drivers
[root@localhost drivers]# ls
commons-lang-2.6.jar ImpalaJDBC41.jar
commons-logging-1.2.jar infobright-mysql.jar
db2jcc.jar informix.jar
db2jcc_license_cu.jar jackcess-2.0.9.jar
derbyclient.jar jconn3.jar
derby.jar jdbcT4-2.4.0.jar
derbyLocale_zh_CN.jar kingbase8jdbc.jar
derbynet.jar kingbasejdbc.jar
Dm4JdbcDriver.jar mariadb.jar
Dm5JdbcDriver.jar mpp-connector-java-8.3.81.51-build-53.2-bin.jar
Dm6JdbcDriver.jar mysql-connector-java-5.1.46.jar
Dm7JdbcDriver.jar mysql-connector-java-5.1.8.jar
Dm8JdbcDriver.jar ojdbc6-12c.jar
Dm8JdbcDriver.jar_bak oracle9.jar
gbase-connector-java-8.3.81.51-build1.0-bin.jar oracle.jar
Hive oscarJDBC.jar
hsqldb.jar postgreSQL.jar
ifx10jdbc.jar sqljdbc2000.jar
ifx10jdbcx.jar sqljdbc41.jar
ifx10lang.jar sqljdbc4.jar
ifx10lsupp.jar sqljdbc.jar
ifx10sqlj.jar tdgssconfig.jar
ifx10tools.jar terajdbc4.jar
ifx12jdbc.jar ucanaccess-2.0.9.4.jar
ifx12lang.jar updb6.jar
ifx12lsupp.jar vertica-jdbc.jar
ifx12tools.jar
/home/dmdba/dm/dmetl/server/dmetl_service_start.sh
Starting DmetlService...
Waiting for DmetlService......
running: PID:75349
Press enter to continue
linux在/home/dmdba/dm/dmetl/client/studio.sh下打开
windows在安装目录\client\studio.exe下打开
[root@localhost dmetl]# cd client/
[root@localhost client]# ls
configuration dmetl_cmd.jar dmetl_cmd.sh dropins p2 plugins studio studio.ini studio.sh
[root@localhost client]# ./studio.sh
会弹出如下的图形化界面,下述信息都不用动,密码默认输入admin:
进入后图形化界面如下:
找到数据源下方的数据库,右键选择新建数据库数据源:
在弹出的界面中选择源数据库的类型,输入正确的密码,并命名好源数据库的名称。这里我的源数据库、中间数据库、目的数据库,三这都是同一个数据库。
在刚才选择的源数据库中添加ETL规则所需要的表,当然,这步应该在最开始操作,不过也不影响,目的是一样的。
#先创建HOTEL模式
CREATE SCHEMA HOTEL;
#接着在模式下创建三张表
CREATE TABLE HOTEL.PERSON_INFO (
ID VARCHAR(50) NOT NULL PRIMARY KEY,
NAME VARCHAR(50),
AGE INT,
PHONE VARCHAR(20),
GENDER CHAR(10)
);
CREATE HOTEL.TABLE "旅客信息一览表" (
"身份证号" VARCHAR(50) NOT NULL,
"姓名" VARCHAR(50),
"年龄" INT,
"联系方式" VARCHAR(20),
"性别" CHAR(10),
CONSTRAINT PK_旅客信息一览表 PRIMARY KEY ("身份证号")
);
CREATE HOTEL.TABLE "旅客信息统计表" (
"统计项目" VARCHAR(50) NOT NULL,
"统计值" VARCHAR(50),
CONSTRAINT PK_旅客信息统计表 PRIMARY KEY ("统计项目")
);
#接着给表中插入源数据
INSERT INTO HOTEL.PERSON_INFO (ID, NAME, AGE, PHONE, GENDER) VALUES
('110101199003071234', '張偉', 35, '13800138001', 'Male');
INSERT INTO HOTEL.PERSON_INFO (ID, NAME, AGE, PHONE, GENDER) VALUES
('110101198512153456', '李娜', 40, NULL, 'Female');
INSERT INTO HOTEL.PERSON_INFO (ID, NAME, AGE, PHONE, GENDER) VALUES
('110101200005017890', '王強', 22, '13900139002', 'M');
查询相关的表信息,确认创建成功:
SELECT OWNER, TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'HOTEL';
右键数据库HOTEL_Source_DB,选择添加表:
将我们刚才在源数据库中创建的三张表导入进去。
右键PERSON_INFO这张表,选择添加影子表增量:
点击工程下方的新建工程:
在工程下找到转换,右键选择新建转换:
会出来一个画布,在右侧的工具箱中选择组件添加:
DMDIS是达梦官方推出的一站式数据集成平台,集数据迁移、同步、清洗转换于一体。它采用低代码图形化操作界面,用户通过“拖拽”方式即可完成数据流转任务的设计与执行。
| 特性 | 说明 |
|---|---|
| 集群单机一体 | 既支持单机模式(适合小型项目),也支持集群模式(满足中大型项目高可用需求) |
| 低代码操作 | 基于Web图形化界面,通过拖拽组件即可完成数据处理流程设计 |
| 异构数据支持 | 支持达梦、Oracle、MySQL等多种数据库之间的数据迁移与同步 |
| 智能数据迁移 | 根据主机资源自动分片并行迁移,提升迁移效率 |
DMDIS集群模式包含四个核心服务:
| 组件 | 职责 |
|---|---|
| 管理器(Manager) | 提供Web管理界面,用户通过浏览器访问和操作 |
| 控制器(Controller) | 负责任务调度和集群管理 |
| 调度器(Scheduler) | 负责任务的定时调度和分发 |
| 执行器(Executor) | 负责具体数据迁移/转换任务的执行 |
DMDIS的工作原理遵循ETL的核心流程:通过配置源端和目标端数据源,定义数据读取与写入组件,通过拖拽建立数据流连接,然后执行转换任务完成数据迁移。用户在Web界面上设计转换任务后,后台引擎按配置执行数据抽取、转换和加载操作。
文章
阅读量
获赞
