SQLLOADER的可视化数据导入方法研究
2013-04-29陈端迎
摘要:简要介绍了SQL*Loader工具的主要功能和优缺点,为解决SQL*Loader可视化不强的缺点,提出了使用SQL*Loader工具的可视化数据导入方法。最后给出了具体实例和部分关键代码,验证了所提方法的正确性和可行性。
关键词:SQL*Loader;可视化;数据导入;控制文件;批处理
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)07-1478-03
现在G字节的数据库已经很普遍,数据仓库通常都达到了T字节容量,随着数据库的增长,使用外部数据快速有效地填充数据库的需求变得非常重要。为迎接这个挑战,Oracle提供了一个称为SQL*Loader的工具。SQL*Loader专门为Oracle数据库进行设计,具有功能强大、数据加载快速的优点,但必须使用命令行窗口进行调用,对使用人员要求比较高,操控性不强。如何能方便快捷的使用SQL*Loader工具进行数据导入,并且实现可视化操作,则成为一个普遍的问题。为实现可视化的使用SQL*Loader工具进行数据导入,笔者使用Delphi7作为程序开发工具,开发出一个小软件。该软件可以在界面上设置导入数据的几种主要参数,并调用SQL*Loader工具将外部数据快速导入到Oracle数据库中。需要说明的是本软件仅使用SQL*Loader工具的部分主要功能来验证可视化的数据导入方法,以起到抛砖引玉的作用。
1 SQL*Loader简介
SQL*Loader工具能够将数据从外部数据文件装载进Oracle数据库。外部文件为文本格式的各种文档,可以是TXT、DAT、CSV等。SQL*Loader的中枢核心是控制文件,控制文件能够控制外部数据文件中的数据如何映射到Oracle的表和列。SQL*Loader输入数据类型完全独立于它们将被载入的数据库列的数据类型。在控制文件中使用的语言是SQL*Loader数据定义语言(Data Definition Language,DDL)。SQL*Loader在执行过程中还将生成日志文件、错误文件和废弃文件。SQL*Loader的装载方式有常规路径和直接路径装载两种,默认为常规路径装载。常规路径装载使用SQL INSERT语句和内存中的键数组缓存将数据直接路径映射输入数据项到数据库表中,这个过程与其他进程竞争SGA内部的内存资源,会降低装载的性能。直接路径装载不需要使用SQL INSERT语句和键数组缓存,格式化输入数据到Oracle数据块并将它们直接写入数据库中,在速度上较常规路径装载快。SQL*Loader工具的组件见图 1。
图 1 SQL*Loader组件
1.1 SQL*Loader的特点
可以从不同文件类型的多个输入数据文件中装载数据;输入记录可以是定长的或变长的记录;可以在同一次运行中加载多个表,还可以逻辑地将选定的记录载入到每个不同的表中;在输入数据载入表之前,可以对其使用SQL函数;多个物理记录可以被编译成一个逻辑记录,同样,SQL可以提取一条物理记录并把它作为多个逻辑记录加载;支持嵌套列、嵌套表、VARRAYS和LOBS。
1.2 SQL*Loader的缺点
SQL*Loader虽然能够快速装载数据到Oracle数据库,但是,使用语法不直观,只能从命令行窗口处进行调用,使用命令编写控制文件,缺少可视化的操作界面,使用不直观、专业性强,不易操作,从而制约了其使用范围。
1.3 可视化数据导入解决的问题
基于SQL*Loader的可视化数据导入功能可以既具备SQL*Loader的导入数据快速、强大,又操作简单,界面直观,能较好的弥补通过命令行使用SQL*Loader工具的不足,受众面广。
2 SQL*Loader的可视化数据导入方法的设计与实现
首先提供可视化的参数编辑界面,进行数据导入的参数设置,将参数写入控制文件;其次生成调用SQL*Loader的批处理文件,批处理文件需指定连接数据库的用户、控制文件、日志文件及导入数据时的相关参数;最后执行批处理文件,批处理文件将调用SQL*Loader工具执行控制文件内容,快速导入数据到数据库,并生成日志文件。下面将说明实现可视化数据导入的主要步骤和关键代码。
2.1 参数设置
选择设定需要导入数据的目标表,选择数据文件,根据数据文件的数据格式,设置字段分隔符、数据括号、跳过行数、装载行数、装载方式、每次提交行数,参数设置好后还需要指定错误文件、废弃文件的路径。界面设计如图 2:
生成控制文件中命令行的关键代码如下:
2.2 字段匹配
进行目标表和数据文件数据的字段匹配,生成导入列位置的字符串。首先根据配置好的参数读取部分外部数据文件中的数据,再连接数据库获取目标表的字段,将外部数据作为数据源,进行源字段和目标字段匹配操作,如果有时间字段的还需要对时间字段进行格式化处理,根据源数据的时间格式设置控制文件中的时间字段的格式参数。界面如图 3所示。
图 3 进行字段匹配
2.3 生成控制文件
参数设置和字段匹配操作完成后,就可以生成控制文件了。将上两步执行完毕得到的结果字符串内容,保存到以.ctl为扩展名的文件中,就生成了控制文件。
2.4 生成批处理文件
通过界面调用SQL*Loader工具需要使用批处理文件达到自动调起的效果。批处理文件中应该包含调起SQL*Loader的语句以及连接数据库的用户名、口令和服务名,还应包含装载行数、跳过行数、提交行数等参数。
生成批处理文件的关键代码如下:
2.5 数据导入
创建执行批处理的进程执行批处理文件,从而调起SQL*Loader工具在命令行中执行控制文件,通过SQL*Loader将外部数据导入到Oracle数据库表中,并生成日志文件。导入过程中出现的错误记录、废弃记录分别记载在错误文件、废弃文件中。执行批处理文件的关键代码如下:
3 结束语
本文使用了SQL*Loader的最基本的一些功能,通过软件界面设置参数,程序代码生成控制文件和批处理文件,执行批处理文件调用SQL*Loader初步实现了可视化的数据导入功能。SQL*Loader还具有更加强大的应用,同样通过本文的方法实现可视化操作和数据导入。
参考文献:
[1] 甲骨文公司Ooacle9i 白皮书[Z].
[2] Kevin Loney. Oracle Database 10g完全参考手册[M]. 张志浩,尹立军,译.北京:清华大学出版社,2006.
[3] 王东,杨献智.加载数据到ORACLE数据库方法研究[J].中国电力教育:2005年研究综述与技术论坛专刊,2005.
[4] 张岩,赵霁.Oracle中数据装载与数据重组的研究[J].计算机应用,2004,24(6).