ociuldr_linux是一个很实用的工具,它可以导出和导入oracle中的所有表,如果在实际工作中,公司上级要看一下某个表的一些情况,比如说员工数,员工薪资等,我们就可以利用这个工具导出数据库中相应的表,然后将其打印出来,非常的爽,它的使用非常的简单,下面就开始吧!(我已经上传了附件,需要的可以下载)
1.配置环境变量
$vi .bash_profile
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib
保存退出
2.赋予ociuldr_linux文件执行权限
$chmod a+wx ociuldr_linux
以scott用户中的表emp为例
3.导出表
$./ociuldr_linux user=scott/123 query='select * from emp' file=1.txt
注:user指定要导出表的所属用户 query指定要导出的表字段 file指定导出的名字
查看1.txt内容就是表emp中的内容
我是用虚拟机做的实验,用命令把它传到xp系统中,用excel打开,即可打印。
$sz -b 1.txt
这样一个表就导出了,那么怎么将导出的表导入到一个新表呢(必须为相同的表结构),之前先建好相应的字段。
以表t3为例,具有跟emp一样的表结构
4.首先建立要导入的控制文件
$vi load.ctl
load data
infile '/home/oracle/1.txt'
append
into table scott.t3
fields terminated by  ',' TRAILING NULLCOLS
(empno,ename,job,mgr,hiredate date 'yyyy-mm-dd hh24:mi:ss',sal,comm,deptno)
注:load data表示要加载数据
infile表示要导出的文件
append表示将内容追加进去而不是覆盖
into table表示要将内容导入到哪个表
fields terminated by "," TRAILING NULLCOLS表示将逗号所在的位置当做空值(是因为我导出的时候,各个字段的内容是以逗号隔开的,如下)
( ......)中的内容为表的字段
5.导入
$sqlldr scott/123 control=load.ctl direct=true
查看表t3,内容和表emp一摸一样
上面的sqlldr命令中的direct=ture表示导入数据时不激活相应的触发器,这样将会提高导入数据的速度,当表的内容较多时,非常有用,如果不加direct=ture的话,它的默认值是false,这样它导入数据时就会激活触发器,也就是相当于使用insert命令一条一条插入,当遇到大的数据量时,将会非常的缓慢。
ociuldr_linux命令还有很多的选项,如果不知道,可以直接敲入 ./ociuldr_linux即可显示
例如上面导出表时若加上table=emp选项,它将自动生成导出表的控制文件,这样我们就不需要自行建控制文件了,稍加修改生成的就可以了。其中的filed选项表示各个字段用什么符号隔开,我没有加,默认的用逗号隔开的。
表的导入导出就到这里了,很实用的!!!