SQLLOADER实验:
建立一个实验用目录:
mkdir -p /home/oracle/sqlldr --在ORACLE用户下执行
在数据库HR用户下创建一个表:
create table dept(deptno number(5),dname varchar2(15),loc varchar2(15));
1)创建数据文件
vi test.dat
10,"A","CHINA"
11,"B","USA"
12,"C","RUSSIA"
13,"D","INDIA"
14,"E","KOREA"
15,"F","JAPAN"
16,"G","FRANCE"
17,"H","ENGLISH"
2)创建控制文件
vi test.ctl
load data
infile 'test.dat' --指定加载的数据文件,可以是单独的文件名-相对路径(控制文件和加载文件在一起时),也可以带有目录的文件名-绝对路径 控制文件和加载的数据文件不在一个目录下
into table dept
fields terminated by ',' optionally enclosed by '"'
(deptno,dname,loc)
3)加载数据
sqlldr hr/hr control=test.ctl log=test.log
如果数据文件中,有列头,那么进行数据加载时,可能会出错,生成一个bad文件。
1)创建数据文件
vi test01.dat
deptno,dname,loc
10,"A","CHINA"
11,"B","USA"
12,"C","RUSSIA"
13,"D","INDIA"
14,"E","KOREA"
15,"F","JAPAN"
16,"G","FRANCE"
17,"H","ENGLISH"
2)创建控制文件
vi test01.ctl
load data
infile 'test01.dat'
into table dept1
fields terminated by ',' optionally enclosed by '"'
(deptno,dname,loc)
3)数据加载
sqlldr hr/hr control=test01.ctl log=test01.log
相关参数补充:
- insert --为缺省方式,在数据装载开始时要求表为空
- append --在表中追加新记录
- replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
- truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录
when deptno <> 15 – 当deptno不为15的时候 可以插入
例子
into table dept when deptno <> 10
SQLLODER_EXPRESS
在sqlldr目录下创建两个以.dat为后缀名的文本文档
vi eemp.dat
1,a,100
2,b,200
3,c,300
vi eemp1.dat
1:a:100
2:b:200
3:c:300
在hr用户下创建两张表:
create table eemp(id number,name varchar2(10),salary number);
create table eemp1(id number,name varchar2(10),salary number);
在sqlldr目录下执行两个命令开始导入
sqlldr hr/hr TABLE=eemp;
sqlldr hr/hr TABLE=eemp1;
需要注意的是
1)命令行中的表名大小写一定要和操作系统上对应的文件名大小写一样,而且文件扩展名必须是.dat
2)数据文件内的数据分割必须是以逗号做分隔符。
3)表列必须是标量数据类型(字符,数字或日期时间)。
打开EM EXPRESS
1 首先启动监听
lsnrctl start
然后查看http和https端口
select dbms_xdb_config.gethttpsport() from dual;
select dbms_xdb_config.gethttpport() from dual;
设置em端口
exec dbms_xdb_config.setHTTPSPort(8089);
exec dbms_xdb_config.setHTTPPort(8090);