对复杂,并且需深入研究方能实现。或者通过第三方工具实现,价格昂贵。数据转换和加工从数据源中抽取的数据不一定完全满足目的库的要求,例如数据格式的不一致、数据输入错误、数据不完整等等,因此有必要对抽取出的数据进行数据转换和加工。数据的转换和加工可以在ETL引擎中进行,也可以在数据抽取过程中利用关系数据库的特性同时进行。ETL引擎中的数据转换和加工ETL引擎中一般以组件化的方式实现数据转换。常用的数据转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合并、数据拆分等。这些组件如同一条流水线上的一道道工序,它们是可插拔的,且可以任意组装,各组件之间通过数据总线共享数据。同时ETL工具还提供了脚本支持,使得用户可以以一种编程的方式定制数据的转换和加工行为。相比在数据库中加工,性能较高,但不容易进行修改和清晰辨认。在数据库中进行数据加工关系数据库本身已经提供了强大的SQL、函数来支持数据的加工,如在SQL查询语句中添加where条件进行过滤,查询中重命名字段名与目的表进行映射,substr函数,case条件判断等等。相比在ETL引擎中进行数据转换和加工,直接在SQL语句中进行转换和加工更加简单清晰;但依赖SQL语句,有些数据加工通过SQL语句可能无法实现,对于SQL语句无法处理的可以交由ETL引擎处理。数据装载将转换和加工后的数据装载到目的库中通常是ETL过程的最后步骤。装载数据的最佳方法取决于所执行操作的类型以及需要装入多少数据。当目的库是关系数据库时,一般来说有两种装载方式:(1)直接SQL语句进行insert、update、delete操作。(2)采用批量装载方法,sqlldr等。大多数情况下使用第一种方法,因为它们进行了日志记录并且是可恢复的。但是,批量装载操作易于使用,并且在装入大量数据时效率较高。使用哪种数据装载方法取决于业务系统的需要。