Oracle中使用sqlldr加载数据

一、SQLLDR数据加载简单示例

1. 创建示例数据表

create table TS_USER

(

  id          VARCHAR2(20),

  user_name   VARCHAR2(30),

  password    VARCHAR2(50),

  sex         CHAR(1),

  create_time DATE

)

2. 在E盘下创建控制文件data.ctl,内容如下:

LOAD DATA

INFILE 'data.txt'

APPEND INTO TABLE TS_USER

FIELDS TERMINATED BY ','

(ID, USER_NAME, PASSWORD)

3. 在E盘下创建数据文件data.txt,内容如下:

1,tuozixuan,123456

2,wengpeng,password

4. 把数据文件data.txt中的数据加载到本地数据库中

sqlldr userid=scott/[email protected]/orcl control=data.ctl

二、sqlldr命令主要参数

userid:oracle用户名/密码

control:控制文件名

data:数据文件名

log:日志文件名

bad:错误文件名

skip:要跳过的逻辑记录的数目(默认为0)

load:要加载的逻辑记录的数目(默认全部)

sqlldr userid=scott/[email protected]/orcl control=data.ctl data=data.txt log=log.log bad=bad.log skip=1 load=1

三、控制文件说明

1. LOAD DATA

    控制文件标识

2. INFILE 'data.txt'

    指定要导入的数据文件为data.txt

    如果使用INFILE *,表示要导入的数据就在control文件里面,即BEGINDATA后面的内容。

3. APPEND INTO TABLE TS_USER

    指定数据要加载到那张表中,加载方式有下面几种:

    APPEND:原表中有数据,则追加在表中

    INSERT:把数据加载到空表中,如果原表中有数据则会停止加载,该项为默认值

    REPLACE:如果原表中有数据,则会全部删除

    TRUNCATE:如果原表中有数据,则会用truncate语句删除

4. FIELDS TERMINATED BY ','

    指定数据的分割符

    FIELDS TERMINATED BY WHITESPACE:以空白分割

    FIELDS TERMINATED BY X'09':以制表符分割

    TRAILINGNULLCOLS:表示字段没有对应值时允许为空

5. (ID, USER_NAME, PASSWORD)

    表的字段

问题:

1. SQL*Loader-601: For INSERT option, table must be empty.  Error on table TS_USER

使用INSERT选项导入(不填默认为INSERT选项),要求被导入的表中没有数据,可以根据具体情况把表清空或使用APPEND选项。

猜你喜欢

转载自tuozixuan.iteye.com/blog/2339942