目录
使用场景
当你拿到一个txt文件,里面的数据是用统一符号分割的,例如如下文件,就可以考虑使用sqlloader导入到oracle数据库。
简单使用
编写ctl文件
OPTIONS (skip=1,rows=128) -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行
LOAD DATA
INFILE '/home/test.txt'--指定外部数据文件,可以写多个 INFILE "another_data_file.csv" 指定多个数据文件--这里还可以使用 BADFILE、DISCARDFILE 来指定坏数据和丢弃数据--的文件
append --操作类型,append表示追加
INTO TABLE table_aaa -- 要插入记录的表
Fields terminated by "|" -- 数据中每行记录用 "|" 分隔
Optionally enclosed by '"' -- 数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时
trailing nullcols --表的字段没有对应的值时允许为空
(
virtual_column FILLER, --这是一个虚拟字段,用来跳过由 PL/SQL Developer 生成的第一列序号
user_id number, --字段可以指定类型,否则认为是 CHARACTER 类型, log 文件中有显示
last_login DATE"YYYY-MM-DD HH24:MI:SS"-- 指定接受日期的格式,相当用 to_date() 函数转换
ccc "trim(:ccc)",
ddd "trim(:ddd)"
)
说明:在操作类型 truncate 位置可用以下中的一值:
1) insert --为缺省方式,在数据装载开始时要求表为空
2) append --在表中追加新记录
3) replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录
执行命令
sqlldr userid=oracle/oracle@orcl control='/home/aaa.ctl' log='/home/aaa.log'
就会将文件中的数据读入到对应的表中