oracle sql Loader 载入数据

一、认识 Oracle sql Loader

    oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问题,这个也许是oracle公司自己产品的兼容性的问题吧。

    sql loader 工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob等类型的数据就有点麻烦了。

    可以通过安装了Oracle的机器上键入 cmd -> sqlldr 获取帮助。

二、Oracle sql Loader 的一些用法

    (1)写控制文件和数据文件型

    在c:\wolfeTest文件夹下建立data.txt数据文件,内容如下:

1 wolfe wolfe
2 wolfe1 wolfe1
3 wolfe2 wolfe2
4 wolfe3 wolfe3
5 wolfe4 wolfe4

    在c:\wolfeTest文件夹下建立cont.ctl控制文件,内容如下:

load data
infile 'C:\wolfeTest\data.txt'
insert into table ftest
fields terminated by " "
(id,username,password)

    Oracle数据库端建立表,结构如下:

CREATE TABLE ftest(
id INT PRIMARY KEY,
username VARCHAR2(100),
password VARCHAR2(100));

    cmd -> sqlldr userid=system/wolfe@orcl control=c:\wolfeTest\cont.ctl data=c:\wolfeTest\data.txt

    操作成功,再看看你的数据库是不是已经存入数据了呢。

    (2)单个控制文件型,在c:\wolfeTest文件夹下建立deptcont.ctl

load data
infile *
into table dept
fields terminated by ','
(deptno,dname,loc)
begindata
10,Sales,Virginia
20,Accounting,Virginia
30,Consulting,Virginia
40,Finance,Virginia

   在oracle数据库上建立表dept,结构如下:

create table dept(
deptno number(2) constraint dept_pk primary key,
dname varchar2(14),
loc varchar2(13)
);

    在机器上键入以下命令和参数:cmd -> sqlldr userid=system/wolfe@orcl control=c:\wolfeTest\deptcont.ctl

    数据插入成功。

    几点说明:

    1、userid=用户名/密码@数据库名。

    2、into table 表名。

    3、fields terminated by '字段数据间隔符'。

    4、最后一行小括号括起来的是表字段列表:(字段1[,字段2,字段3]... ...)。

    5、sqlldr导入的四种加载方式:

         APPEND :原先的表有数据 就加在后面 ;
    INSERT:装载空表 如果原先的表有数据 sqlloader会停止 默认值 ;
    REPLACE :原先的表有数据 原先的数据会全部删除 ;
    TRUNCATE :指定的内容和replace的相同 会用truncate语句删除现存数据。

    注意的问题:

    1、文件和文件夹的命名不能有空格,如果你确实想留空格,请试一试用半角双引号("")将你的文件路径引在里面看是否成功,例如:control="c:\wolfe Test\dept cont.ctl"。(我没试过)

    2、Date类型的好像要进行特殊的转化。例如 to_data(... ...)。我也没试过,但是不转的话是不可以插入数据的。

    以上是网上文章的小小实验总结,错误的地方请给与纠错,谢谢。

posted @ 2013-06-04 10:52  Wolfe Yu  阅读(217)  评论(0)    收藏  举报
QQ:379382995
手机:15942886891
邮箱:379382995@qq.com