SQL*Loader,是Oracle数据库系统提供的一个数据移植工具,它提供了一个命令行的方式,可以让用户成批的向Oracle数据库中装入大量数据。虽然Oracle数据库与SQL Server数据库都提供了图形界面的导入工具,但是,图形界面有一个很大的不足,就是不能够直接给前台程序引用。而命令行的导入模块,则可以直接被前台的应用程序所调用,这也是SQL*Loader之所以成为Oracle数据库系统最通用的工具之一的原因。
SQL*Loader其具有如下的优势
一是可以直接被前台应用程序调用。如开源的COMPIERE企业管理应用系统,其就是采用Oracle的数据库系统。在COMPIERE这个应用系统中,有一项很强大的功能,就是数据导入功能。其不但可以按现有的模板导入数据,而且,用户还可以自定义导入的格式。这对于系统在基础数据导入的时候,非常的有用。 但是,其这个功能的开发,确很简单,因为其基本上都是直接调用后台数据库系统中的SQL*Loader模块。命令行模式的导入模块,可以直接被前台的应用程序调用,这是其最大的优势。
二是可以从既定文件中大量导入数据。利用SQL*Loader工具,可以从既定文件中,如逗号分隔符文件或者固定宽度的文件,把这些文件中的大量记录按照一定的规则导入到Oracle数据库系统中去。这个导入的效率比图形界面来说,也要高的多。
三是可以实现把多个数据文件合并成一个文件。我们都知道,Oracle数据库中,可以把一个数据库应用所需要的数据存放在多个数据文件中,以追求比较高的数据库性能,以及比价高的数据库安全性。但是,有时候,我们也可能需要把这几个数据文件合二为一,此时,就可以采用SQL*Loader工具把它们进行合并。
四是修复、分离坏的记录。有时候,我们需要导入的数据跟Oracle数据库系统的数据表可能会存在一些冲突,导致数据导入的失败。如可能需要导入的数据字段太长,超过了数据表的最大长度限制,此时,就会导致数据导入的失败。利用SQL*Loader导入工具,可以把这些不符合规则的记录分离出来,存放在一个独立的文件中。而符合规则的数据,则可以被正常的导入。如此的话,就可以提高数据导入的准确性。
下面,我们来看看具体如何使用这个Oracle数据库系统为我们准备的好帮手。
一般SQL*Loader模块至少需要两个文件,才可以使用
一是数据文件。数据文件,顾名思义,就是我们需要导入的数据集合。对于Oracle系统来说,其可以支持多个格式的数据文件,如逗号分隔符或者TAB键分隔符或者分号分隔符等文本文件,也支持固定宽度的文本文件等等。不过在实际应用中,用的最多的还是逗号分隔的文本文件。
二是控制文件。控制文件其起的作用就是建立数据文件与Oralce数据表字段之间的一一对应关系。简单的说,把数据文件中的某个内容放在Oracle数据表中的那个字段上,这就是控制文件所起的主要作用。
另外还有一个文件,也非常有用,叫做坏文件。如果我们在命令行工具中,指定了这个坏文件,则导入过程中,一些导入不成功的记录,则会被保存在这个坏文件中。所以,对于数据库管理员来说,这个文件有时候往往比数据导入日志文件更加的实用。所以,笔者建议,若企业对于数据导入的准确性要求比较高的画,则在使用SQL*Loader导入数据的时候,最好能够指定这个坏文件。这对于我们后续核对导入数据的准确性,具有很大的实用价值。