欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle中使用sqlldr加载数据

程序员文章站 2022-05-11 22:21:51
...

一、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/password@127.0.0.1/orcl control=data.ctl

 

二、sqlldr命令主要参数

 

userid:oracle用户名/密码

control:控制文件名

data:数据文件名

log:日志文件名

bad:错误文件名

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

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

 

sqlldr userid=scott/password@127.0.0.1/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选项。