使用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)"
表示插入当前日期

浙公网安备 33010602011771号