使用sqlloader向oracle导入文本数据

文本文件如下,注意文件名必须有后缀,文本行首也需要|分隔符:
[oracle@ycr test]$ more person.txt
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m


创建表:
SQL> create table person (name varchar2(6),num varchar2(5),gender varchar2(3));
Table created.


编写控制文件input.ctl:
OPTIONS (skip=1)
LOAD DATA
INFILE "person.txt"
truncate
INTO TABLE person -- 要插入记录的表
Fields terminated by "|"
trailing nullcols --表的字段没有对应的值时允许为空
(
    virtual_column FILLER, --这是一个虚拟字段,用来跳过由 PL/SQL Developer 生成的第一列序号
    name,
    num,
    gender
)


导入:
sqlldr test/oracle@ycr2 control=input.ctl

另外如果实际列中比平面文件中列数多,可在控制文件最后多余的列明,比如表中有日期列,但平面文件中没有,可在控制文件列明的最后一条加上如下:
XXXXX     char "trunc(sysdate)"
表示插入当前日期

posted @ 2017-11-10 11:24  ClarkYu  阅读(487)  评论(0)    收藏  举报