目录
一、目标
1、掌握11g的sqlldr的使用方法
2、掌握11g的外部表的使用方法
二、数据的装载【三种方式】
1、SQL*LOADER【可用于数据仓库数据导入】
(1)SQL*LOADER是一个ORACLE工具,能够将数据从外部数据文件装载到数据库中。
(2)运行SQL*LOADER的命令是sqlldr。
(3)Sqlldr的两种使用方式:
a)只使用一个控制文件,在这个控制文件中包含数据
b)使用一个控制文件(作为模板) 和一个数据文件
一般采用第二种方式,数据文件可以是 CSV 文件、txt文件或者以其他分割符分隔的。
(4)SQL*LOADER中控制文件的格式:
options(skip=2)###跳过开头两行 load data infile '1.txt' into table empnew insert ( a char terminated by ',', b char terminated by ',', c date "yyyy-mm-dd" nullif (c="NULL") )复杂方式options(skip=2)###跳过开头两行 load data infile '1.txt' into table empnew insert fieldsterminated by "," ( a, b, c )简单方式
(5)操作类型 可用以下中的一值:
1) insert --为缺省方式,在数据装载开始时要求表为空
2) append --在表中追加新记录
3) replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录
2、外部表
(1)外部表中的数据不装入数据库中,数据库中只存储外部表的定义信息,实际的数据位于操作系统的平面文件(比如txt文档等)中,但是,可以在数据库中,像访问正常表那样,通过select语句来访问操作系统中的平面文件中所含有的数据。
(2)外部表是只读的。
(3)可以使用SQL,PL/SQL和JAVA访问外部表。
(4)外部表分为2种:使用数据泵引擎生成的外部表、根据文本文件创建的外部表。
create table dept_ext( new_deptno [number],new_dname [varchar2(20)], new_loc [varchar2(20)]) organization external ( type oracle_datapump default directory mes_backup location ('dept1.dmp','dept2.dmp') ) parallel as select deptno, dname, loc from dept;
create table emp_ext_txt ( employee_id number, first_name varchar2(20), last_name varchar2(20) ) organization external ( type oracle_loader default directory mes_backup access parameters ( records delimited by newline fields terminated by ',' ) location ('emp.txt') ); 把emp.txt加入如下信息测试: [root@localhost expdpbackup]# vim emp.txt 001,Tom,Smith 002,John,Mike 003,Bob,Peter
3、导入/导出--【exp,imp,expdp,impdp】
三、【数据导入】---SQL*LOADER举例
1、建立一张表 address
SQL>create table address(sno int,zz varchar2(10));
2、建立数据文件 11.txt
1,qingdao 2,taiyuan 3,hangzhou 4,shanghai
3、建立控制文件 11.ctl
load data infile '11.txt' into table address insert ( sno char terminated by ',', zz char terminated by ',' #后面如果没有逗号,但是有回车键,也会终止 )
4、使用sql*loader命令
[oracle@localhost data]$ sqlldr userid=scott/scott control=11.ctl log=11.log
查看address表,数据已经插入进来了
查看log日志:
四、【数据导出】---spool方式
1、spool导出
SQL>spool /data/2.txt SQL>select empno||','||ename||','||to_char(hiredate,'yyyy-mm-dd') from emp; SQL>spool off
2、后续根据sqlldr进行导入即可
文章评论