elt工具 oracle mysql_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别

什么是数据同步工具(ETL、ELT)

数据同步工具ETL或者ELT的作用是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。数据同步是BI项目重要的一个环节。通常情况下,在BI项目中数据同步会花掉整个项目至少1/3的时间,数据同步工具设计的好坏直接关接到BI项目的成败。

关于ETL与ELT的区别

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

ETL其实并不是一个新的概念,大家经常使用的像Informatica、Kettle、DataStage等,就是传统的ETL数据同步工具。ETL的理念着重体现在一些数据清洗转化功能,比如空值处理、规范化数据、数据替换、数据验证等等。

在数据湖或数据中台则往往会采用ELT的方式进行数据同步。

ELT是一个比较新潮的概念,相比于ETL,从功能上来说没有差异,只是换了一个顺序。差别在于,如果采用ELT的方案,首先把数据用一种高效的方式从数据源抽取出来,然后在数据仓库中进行数据的转换处理。这种ELT的方式相比于ETL有很大的优势,而本文介绍的偶数数据中台Lava中的数据同步工具,使用的就是ELT这种理念。

关于偶数数据中台里的数据同步工具产品设计作为一个数据同步工具,偶数的数据同步工具支持很多常用数据源比如DB2、Oracle、MySQL、SQLServer、Postgresql等关系型数据库以及HDFS等。

偶数的数据同步工具符合ELT的理念,把数据的转换处理交给目标数据仓库来做。并且很好的利用目标数据仓库,例如OushuDB的高效特性来进行数据同步,块级别的并发导入效率远远高于JDBC的方式导入。基于OushuDB的高效性能,ELT的优势更加明显:

1.更快的数据同步速度

传统的ETL需要将数据加载到临时空间中,而且随着数据大小的增加,转换时间也会增加。但是在ELT过程中,速度不会数据大小的影响,而且仅需加载到目标系统一次,无需使用临时空间。

2.更快的清洗、分析速度

在ELT的理念下,数据转换依赖强大的目标系统,相比ETL在数据抽取过程中对数据处理的复杂性,ELT的方式更加高效。通过对目标数据仓库的调优,ELT可获得数倍的效率提升。

3.更好的维护性和扩展性

采用ELT模式,我们可以避免构建一个专有的数据转换集群,而是通过一个通用的、易于创建和维护的分布式计算集群来完成所有的工作。

分布式的数据加载、强大的任务监控、简单的操作步骤以及傻瓜式的部署方式,使得偶数数据中台Lava中的数据同步工具可以为构建数据仓库或者搭建数据中台提供强大助力。

我们是偶数科技,更多信息请关注我们的公众号:偶数科技

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个简单的 ELT shell 脚本,可以将数据MySQL 抽取加载到 Oracle ,并进行转换。请根据实际情况修改数据库连接信息、表名、字段名、转换规则等。 ```bash #!/bin/bash # 数据库连接信息 MYSQL_HOST="localhost" MYSQL_PORT="3306" MYSQL_DB="test" MYSQL_USER="root" MYSQL_PASSWORD="password" ORACLE_HOST="localhost" ORACLE_PORT="1521" ORACLE_SID="ORCLCDB" ORACLE_USER="system" ORACLE_PASSWORD="password" # 抽取 MySQL 数据 mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DB} -N -e "SELECT * FROM users" | \ # 转换数据格式 awk -F'\t' '{print $1","$2","$3}' | \ # 加载到 Oracle sqlldr ${ORACLE_USER}/${ORACLE_PASSWORD}@${ORACLE_SID} control=users.ctl log=users.log # 转换 Oracle 数据 sqlplus ${ORACLE_USER}/${ORACLE_PASSWORD}@${ORACLE_SID} @users.sql ``` 其 `users.ctl` 文件内容如下: ```ctl LOAD DATA INFILE * APPEND INTO TABLE users FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( id INTEGER EXTERNAL, name CHAR(50), age INTEGER ) ``` `users.sql` 文件内容如下: ```sql UPDATE users SET name = UPPER(name); ``` 这个脚本假设 MySQL 有一个名为 `users` 的表,包含 `id`、`name` 和 `age` 三个字段,其 `name` 字段需要转换为大写字母。脚本首先使用 MySQL 的命令行工具数据抽取到标准输出,然后使用 awk 将数据格式转换为逗号分隔的形式,最后使用 Oracle 的 sqlldr 工具数据加载到 Oracle 。加载完成后,脚本使用 sqlplus 工具执行一条 SQL 语句将 `name` 字段转换为大写字母。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值