oracle 外部表之 sqlldr 生成

oracle的导入工具,速度挺快,这里记一下外部表的使用,通常外部表要记的语法太多例如:

CREATE TABLE PROD_MASTER
(
  "EMPNO" NUMBER,
  "ENAME" VARCHAR2(50),
  "HIREDATE" DATE,
  "DEPTNO" NUMBER
)
ORGANIZATION external
(
  TYPE oracle_loader
  DEFAULT DIRECTORY ext_table
  ACCESS PARAMETERS
  (
    RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII
    preprocessor ext_table:‘uncompress.sh‘
    BADFILE ‘EXT_TABLE‘:‘prod_master.dat.bad‘
    LOGFILE ‘1.log_xt‘
    READSIZE 1048576
    FIELDS TERMINATED BY "," LDRTRIM
    MISSING FIELD VALUES ARE NULL
    REJECT ROWS WITH ALL NULL FIELDS
    (
      "EMPNO" CHAR(255)
        TERMINATED BY ",",
      "ENAME" CHAR(255)
        TERMINATED BY ",",
      "HIREDATE" CHAR(10)
        TERMINATED BY ","
        DATE_FORMAT DATE MASK ‘dd-mon-yyyy‘,
      "DEPTNO" CHAR(255)
        TERMINATED BY ","
    )
  )
  location
  (
    ‘prod_master.dat.gz‘
  )
)REJECT LIMIT UNLIMITED

如果全靠手打,这个工作量有点大,可以考虑系统自己生成,步骤如下:
1 检查组件:

SELECT * FROM V$OPTION WHERE PARAMETER = ‘Oracle Database Vault‘;
select comp_id,comp_name, version, status from dba_registry;
chopt disable dv

如果不关

SQL> select * from prod_master;
select * from prod_master
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04094: preprocessing cannot be performed if Database Vault is installed

2 创建表

CREATE TABLE PROD_MASTER
(
  "EMPNO" NUMBER,
  "ENAME" VARCHAR2(50),
  "HIREDATE" DATE,
  "DEPTNO" NUMBER
)

3 创建控制文件
cat prod_master.ctl

load data
infile ‘/home/oracle/scripts/prod_master.dat.gz‘
append
into table prod_master
fields terminated by ","
trailing nullcols
(empno,ename,hiredate date(10) ‘dd-mon-yyyy‘,deptno)

4创建存放目录

create directory ext as ‘/home/oracle/ext‘;
grant read,write,execute on ext;

5 生成建外部表的语句
sqlldr userid=hr/hr control=prod_master.ctl extern_table=gernerate_only log=create_table.sql
由于启用了压缩,修改其中:
PREPROCESSOR EXT:‘uncompress.sh‘ --Preprocessor before readsize

原文地址:http://blog.51cto.com/snowhill/2121932

时间: 2024-08-28 07:30:55

oracle 外部表之 sqlldr 生成的相关文章

Oracle外部表详解(转载)

(外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中数据格式与创建表时access parameters中的定义需保持同步,适当用skip=1) 外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储

如何利用Oracle外部表导入文本文件的数据

同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在集合的层面进行比对. 那么如何将文本文件的数据导入到数据库中呢?在这里,主要利用了Oracle的外部表特性. Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的数据必须是二进制dump文件,该du

ORACLE外部表总结

外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文 件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表,顾名思义,存储在数据库外面的表.当存取时才能从 ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT.UPDATE.DELETE操作).不能对外部表建立 索引.因为创建索引就意味着要存在对应的索引记录.而外部表其实在没有存储在数据库中.故在外部是无法建立索

oracle 外部表

语法: create table 表名( 列名1,列名2,...... ) organization external  ###说明创建外部表 ( type 访问类型            ###一般是 ORACLE_LOADER ,ORACLE_DATAPUMP default directory   路径名   ####指定默认目录对象 access parameter (        ###数据源文件与表中行之间的映射关系 records delimited by 设置分隔符    ##

oracle 外部表查alter日志

--创建文件夹,路径是alter日志的路径 create or replace directory data_dir as '/u01/app/oracle/diag/rdbms/orcl/orcl/trace'; --创建外部表 create table alert_log( text_line varchar2(225) ) organization external ( TYPE ORACLE_LOADER DEFAULT DIRECTORY DATA_DIR ACCESS PARAMET

使用ORACLE外部表装载复杂数据

原文:http://www.oracle.com/technetwork/issue-archive/2013/13-jan/o13asktom-1886639.html I am using SQL Loader to load data into tables from a flat file. Some sample data in the file might be: 我打算使用SQL Loader装载来自平面文件数据.样例数据如下: 12,smith,[email protected]

Oracle外部表

1.外部表简介 外部表是Oracle9i之后来使用的.外部表是一类表的定义存在于数据库而数据不存在于数据库的表. 在数据库操作过程中可以对外部表进行select,join,sort操作也可以对外部表创建视图和同义词.但是不能在外部表上进行DML操作和创建索引. 外部表提供两种访问驱动.一种ORACLE_LOADER另一种ORACLE_DATAPUMP.默认驱动是ORACLE_LOADER. ORACLE_LOADER驱动从外部文件中读数据.ORACLE_LOADER创建外部表的语法和SQL*Lo

Oracle外部表的管理和应用

外部表作为oracle的一种表类型,虽然不能像普通库表那么应用方便,但有时在数据迁移或数据加载时,也会带来极大的方便,有时比用sql*loader加载数据来的更为方便,下面就将建立和应用外部表的命令和操作记录如下: --创建存放文件的directory对象 sqlplus username/[email protected] create directory ex_data as '/home/ex_data/'; --创建外部表 CREATE TABLE tab1_ex ( C1 VARCHA

Oracle 创建外部表

Oracle 外部表能迅速的将海量的数据导入到数据库里面,外部表的创建使用步骤如下: 1 创建一个Directory:必须用sys用户创建,用户存放外部数据文件. create directory DIR_DATA as '/home/oracle/oradata/IN'; 给用户授权目录的使用权限,否则用户不能访问该目录以及其下的文件 grant write,read on directory DIR_DATA to Test; 2 将要导入的外部数据文件,Test_File.csv 放到目录