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/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选项。
上一篇: 开源桌面环境失去竞争力?
下一篇: Spring Boot使用参考