技术开发 频道

使用Oracle内建功能构建ETL流程



    准备工作
    在使用外部表之前,首先要建立DIRECTORY对象。同时给需要进行外部表操作的用户赋予适当的权限。
SQL> CREATE OR REPLACE DIRECTORY source_dir as 'C:\oracle\oradata\source'; --源文件目录 Directory created. SQL> grant connect, dba to stenny identified by stenny; Grant succeeded. SQL> CREATE OR REPLACE DIRECTORY source_dir as 'C:\oracle\oradata\source'; Directory created. SQL> CREATE OR REPLACE DIRECTORY target_dir as 'C:\oracle\oradata\target'; Directory created. SQL> CREATE OR REPLACE DIRECTORY log_dir as 'C:\oracle\oradata\log'; Directory created. SQL> grant read on directory source_dir to stenny; Grant succeeded. SQL> grant write on directory target_dir to stenny; Grant succeeded. SQL> grant write on directory log_dir to stenny; Grant succeeded.
    数据抽取— ORACLE_LOADER
    平文件的数据源一般有两种格式:定长格式或者分隔符格式,ORACLE_LOADER对这两种格式都提供支持。如果是分隔符格式的源文件,使用关键字FIELDS TERMINATED BY指定分隔符;如果是定长格式文件,使用关键字POSITION指定数据列的位置。
    --数据源文件product1.dat
    1,Bicycle,JiangSu
    2,Camps,ZheJiang
    3,Wearings,SiChuan
    4,Gloves,SiChuan
    5,Food,YunNan
    6,Shoes,NULL
    使用EXTERNAL ORGANIZATIONAL关键字构建外部表,注意DRIVER关键字指定了ORACLE_LOADER驱动;DEFAULT DIRECTORY子句指定了默认的操作目录;在ACCESS PARAMETERS子句中定义了分隔符、坏文件、LOG文件;LOCATION关键字指定了外部表依存的数据文件,如果存在多个文件,使用逗号分隔。
SQL> ed Wrote file afiedt.buf 1 CREATE TABLE stenny_ext_product 2 (product_id NUMBER(4), 3 product_name VARCHAR2(20), 4 location VARCHAR2(25) 5 ) 6 ORGANIZATION EXTERNAL 7 ( 8 TYPE ORACLE_LOADER 9 DEFAULT DIRECTORY source_dir 10 ACCESS PARAMETERS 11 ( 12 records delimited by newline 13 badfile log_dir:'bad_product.dat' 14 logfile log_dir:'product.log' 15 fields terminated by ',' 16 missing field values are null 17 ( product_id, product_name, location ) 18 ) 19 LOCATION ('product1.dat') 20 ) 21* REJECT LIMIT UNLIMITED SQL> / Table created. SQL> select * from stennY_ext_product; PRODUCT_ID PRODUCT_NAME LOCATION ---------- -------------------- ------------------------- 1 Bicycle JiangSu 2 Camps ZheJiang 3 Wearings SiChuan 4 Gloves SiChuan 5 Food YunNan 6 Shoes NULL 6 rows selected.
    经过上面的步骤,我们将数据库之外的一个平文件通过访问驱动程序ORACLE_LOADER与一个数据库表STENNY_EXT_PRODUCT建立了映射关系。我们对这个外部表可以进行排序,表连接等只读操作。
0
相关文章