oracle 外部表之 sqlldr 生成

前端之家收集整理的这篇文章主要介绍了oracle 外部表之 sqlldr 生成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

  1. CREATE TABLE PROD_MASTER
  2. (
  3. "EMPNO" NUMBER,"ENAME" VARCHAR2(50),"HIREDATE" DATE,"DEPTNO" NUMBER
  4. )
  5. ORGANIZATION external
  6. (
  7. TYPE oracle_loader
  8. DEFAULT DIRECTORY ext_table
  9. ACCESS PARAMETERS
  10. (
  11. RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII
  12. preprocessor ext_table:'uncompress.sh'
  13. BADFILE 'EXT_TABLE':'prod_master.dat.bad'
  14. LOGFILE '1.log_xt'
  15. READSIZE 1048576
  16. FIELDS TERMINATED BY "," LDRTRIM
  17. MISSING FIELD VALUES ARE NULL
  18. REJECT ROWS WITH ALL NULL FIELDS
  19. (
  20. "EMPNO" CHAR(255)
  21. TERMINATED BY ",","ENAME" CHAR(255)
  22. TERMINATED BY ","HIREDATE" CHAR(10)
  23. TERMINATED BY ","
  24. DATE_FORMAT DATE MASK 'dd-mon-yyyy',"DEPTNO" CHAR(255)
  25. TERMINATED BY ","
  26. )
  27. )
  28. location
  29. (
  30. 'prod_master.dat.gz'
  31. )
  32. )REJECT LIMIT UNLIMITED

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

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

如果不关

  1. sql> select * from prod_master;
  2. select * from prod_master
  3. *
  4. ERROR at line 1:
  5. ORA-29913: error in executing ODCIEXTTABLEOPEN callout
  6. ORA-29400: data cartridge error
  7. KUP-04094: preprocessing cannot be performed if Database Vault is installed

2 创建表

  1. CREATE TABLE PROD_MASTER
  2. (
  3. "EMPNO" NUMBER,"DEPTNO" NUMBER
  4. )

3 创建控制文件
cat prod_master.ctl

  1. load data
  2. infile '/home/oracle/scripts/prod_master.dat.gz'
  3. append
  4. into table prod_master
  5. fields terminated by ","
  6. trailing nullcols
  7. (empno,ename,hiredate date(10) 'dd-mon-yyyy',deptno)

4创建存放目录

  1. create directory ext as '/home/oracle/ext';
  2. 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

猜你在找的Oracle相关文章