-
利用数据库块加载工具以提升数据插入速度,同时掌握写作技巧,写出被广泛引用的科学论文和获取资金支持的项目提案
资源介绍
8.4 使用数据库的块加载工具加速数据插入
流程检查
规划与设计:需求/现状 -> 架构 -> 实现 -> 测试/发布
数据流:抽取 -> 清洗 -> 规格化 -> 提交
用排序,抽取和聚合等方法把你的源数据尽可能快地加载到 ETL 服务器以后,
你将面临把大量必要的数据加载到数据仓库,这个时候用到了数据库管理系统中
的块加载功能。在数据库交互方面块加载器比普通 SQL 语句更高效,它将大大提
升 ETL 的性能。我们使用 ORACLE 的 SQL*LOADER 来说明块加载器的优越性。
同样你也可以在其它大多数数据库管理系统中找到块加载功能。
重要提示:大多数块加载器在向数据库插入数据时都有一定的限制。例如,
他们在插入大批量的数据时确实获得很大的好处,但是如果在你的处理中包含
了对现存记录的更新,可能你就没有那么幸运了。根据你需要插入和更新的记
录数量,你将发现仔细地预处理你的输入数据后-将插入与更新分开数据可以
以块加载的方式运行,这样至少插入的数据可以以块加载方式运行。注意 IBM 的
Red Brick 系统可以支持更新或者插入逻辑作为它的块加载器的一部分。
基于传统路径查询方法,SQL*LADER 使用 INSERT 语句来加载数据到表中,
数据库的操作与常规 SQL 处理中的插入语句以同样的方式来处理。所有的索引都
要维护,主键、参考完整性和其他大部分的约束都起作用,并启动插入触发器。
这时候使用 SQL*LOADER 的主要好处是:方法简单和使用最少的代码来从平面文
件加载数据。
激活 SQL*LOADER 的语法有多种格式,下面我们将用 SQL*LOADER 加载数据
到 ORACLE 表中,例子还是用前面用过的销售文件做示范。
sqlldr userid=joe/etl control=sales.ctl data=sales.txt log=sales.log
bad=sales.bad rows=1000
控制文件 Sales.ctl 应该包含以下内容: