zoukankan      html  css  js  c++  java
  • 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.csv 放到目录下,注意文件每个字段的分隔符,此处csv每列的分隔符为英文的分号";" 内容如下

    NAME;NAME_DESC
    Latiny1;latiny test file
    Latiny2;latiny test file
    Latiny3;latiny test file
    Latiny4;latiny test file
    Latiny5;latiny test file
    Latiny6;latiny test file
    Latiny7;latiny test file
    Latiny8;latiny test file
    Latiny9;latiny test file
    Latiny10;latiny test file

      3 创建语句

    create table ext_test
    (
    name char(256),
    name_desc char(256)
    )
    organization external
    (
    type oracle_loader
    default directory DIR_DATA
    access parameters
    (
    records delimited by newline
    badfile dir_ctrr_data:'test..bad'
    logfile dir_ctrr_data:'test..log'
    discardfile dir_ctrr_data:'test..dsc'
    skip 1
    fields terminated by';'
    reject rows with all null fields
    (
    NAME char(256),
    NAME_DESC char(256)
    )
    )
    location ('test.csv')
    )
    reject limit unlimited
    parallel;

     

      参数说明:

    1) organization external  -- 关键字,必须要有。以表明定义的表为外部表。
    2) type           -- 外部表的类型
    oracle_loader        -- 定义外部表的缺省方式,只能只读方式实现文本数据的装载。
    oracle_datapump      -- 支持对数据的装载与卸载,数据文件必须为二进制dump文件。可以从外部表提取数据装载到内部表,也可以从内部表卸载数据作为二进制文件填充到外部表。


    3) default directory        --缺省的目录指明了外部文件所在的路径
    4) location          -- 定义了外部表的位置
    5) access parameters         -- 描述如何对外部表进行访问
    records  -- 关键字后定义如何识别数据行
    delimited by 'xxx'    --换行符,常用newline定义换行,并指明字符集。对于特殊的字符则需要单独定义,如特殊符号,可以使用ox'十六位值',例如tab(/t)的十六位是9,则delimitedby0x'09';cr(/r)的十六位是d,那么就是delimitedby0x'0d'。
    skip x   -- 跳过x行数据,有些文件中第一行是列名,需要跳过第一行,则使用skip 1。
    fields   -- 关键字后定义如何识别字段,常用的如下:
    fields:terminated by 'x'   --字段分割符。
    enclosed by 'x'        --字段引用符,包含在此符号内的数据都当成一个字段。例如一行数据格式如:"abc","a""b,""c,"。使用参数terminated by ',' enclosed by '"'后,系统会读到两个字段,第一个字段的值是abc,第二个字段值是a"b,"c,。
    lrtrim               --删除首尾空白字符。
    missing field values are null  --某些字段空缺值都设为null。对于字段长度和分割符不确定且准备用作外部表文件,可以使用ultraedit、editplus等来进行分析测试,如果文件较大,则需要考虑将文件分割成小文件并从中提取数据进行测试。


    6) fields terminated by ","        --描述字段的终止符
    7) reject limit unlimited         --描述允许的错误数,此处为无限制

     

      4 查看数据

      select * from ext_test;

  • 相关阅读:
    springboot开发之配置Servlet三大组件(Servlet、Filter、Listener)
    springboot开发之配置嵌入式Servlet容器两种方式
    springboot开发之利用idea自带的插件模拟客户端请求
    springboot开发之配置自定义的错误界面和错误信息
    springboot开发之删除员工
    springboot开发之修改员工
    springboot开发之添加员工
    springboot开发之thymeleaf页面公共元素的抽取
    oracle 创建表、删除表、添加字段、删除字段、表备注、字段备注、修改表属性
    C#拼装JSON数组简易方法
  • 原文地址:https://www.cnblogs.com/Latiny/p/6802172.html
Copyright © 2011-2022 走看看