oracle 加载外部数据,如何实现ORACLE外部文件数据的自动加载

SQL*LOADER是将外部文件中的数据移到ORACLE数据库表中的软件工具。其特点是加载方式灵活多样,如:加载二进制及字符型数据、加载变长及固定格式数据,对被加载数据进行过滤及同时加载多个数据库表等等。其不足之处是必须由用户事先编制好控制文件,再通过手工输人命令调用控制文件,以实现外部数据文件加载到数据库表中。显然,对少量外部文件数据的加载,系统数据管理员可通过手工方法轻松实现;但对大量外部文件数据(如:辖内各单位定时或不定时上报的通讯文件数据),每次靠手工方法加载,不仅系统数据管理员工作量大,而且容易出错,同时也很难保证数据的时效性。那么有没有一种能自动生成控制文件、自动进行数据加载的方法呢?为此,笔者在实际开发过程中,根据被加载数据库表的性质,对sQL*LoADER控制文件的基本内容进行了有效的分类,在此基础上借用对数据库表记录的处理,利用PRO*C及C语言编程,成功地实现了外部文件数据加载的后台无人值守,既减轻了维护工作量,又提高了工作效益,保证了数据的时效性。以下笔者从分析一个简单的控制文件示例出发,提出开发过程中的基本思路并附上简单的源程,希望能据此抛砖引玉,以飨同仁。一、基本思路一个简单的控制文件示例(sample.ctl):L()ADDATAINFILE‘emp.dat’一外部文件名APPENDINTOTABLEemp一被加载数据库表名WHENempno>100_一过滤条件FIELDSTERMINATEDBY“,”O盯IONALLYENCLOSEDBY“”’(empno,ename,job)一被加载数据库表字段名,以逗号分隔加载命令:SQLLOADUSERID刊丛鲜匕鱼鲤吸一CON-TROL二鲤四业二鱼LOG二丝州匕鱼g从以上示例分析,我们可推出以下基本结论:控制文件的内容由固定部分(关键字,字母大写部分)和可变部分(基本要素,下划线部分)两部分组成。对同类性质的控制文件,其关键字是相同的,而基本要素则随被加载数据库表的性质不同而变化。因此,编制控制文件的关键在于,一是确认控制文件的基本类型,二是根据控制文件的基本类型确定各被加载数据库表的基本要素。由此,提出以下基本设计思想:1.按被加载数据表性质,确定控制文件的基本类型,设定控制文件的基本要素。包括:外部数据文件名,被加载数据库表名,数据库表字段名,过滤条件,加载方式(APPEND,INSERT,REPLACE))等等。2.创建控制文件基本要素数据库表,根据被加载数据库表的具体性质,设定其对应基本要素,并在基本要素数据库表中插入相应记录。3.用PRO*C及C语言编写程序,循环调用基本要素数据库表,并据此自动检测外部数据文件,自动生成对应控制文件,自动加载数据。二、程序设计基本要素数据库表结构:ereatetableeomjra(apl一amevarcharZ(40)notnull,table一amevareharZ(10)notnull,txt一le一amevarcharZ(12)notnull,fieldsvarcharZ(500)notnull);插人记录:insertintotableeomjrava一ue,(‘中央预算收入日报’,zyys’,‘zy.dat’,‘kmme,kmdh,je’);insertintotableeomtravalues(‘省级预算收入日报’,sjys’,‘sjys.dat’,‘kmme,kmdh,j。’);eomm一te;源程一:主控程序(autoload.pC)#inelude<8tdio.h>#inelude#inelude#inelude

你可能感兴趣的:(oracle,加载外部数据)