oracle之数据同步:Oracle Sql Loader使用说明(大批量快速插入数据库记录)
Posted 陈小兵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle之数据同步:Oracle Sql Loader使用说明(大批量快速插入数据库记录)相关的知识,希望对你有一定的参考价值。
1.准备表数据
select * from emp10; create sequence seq_eseq increment by 1 start with 1001 maxvalue 999999999; --得到序列的SQL语句 select seq_eseq.nextval from sys.dual; --删除序列的SQL DROP SEQUENCE seq_eseq; create table emp10( empno number(4) primary key, ename varchar2(20) not null, job varchar(20) not null, mgr number(4), hiredate date, sal number(5,2), comm number(5,2), deptno number(2), constraint dept_emp10_fk foreign key(deptno) references dept(deptno) ) insert into emp10(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(seq_eseq.nextval,\'lili\',\'IT\',980,to_date(\'1988-05-11\',\'yyyy-mm-dd\'),500,100,10); select count(*) from emp10;
导出csv文件
导出后将csv文件中的双引号"全部去掉。
2.ctl文件参数说明:
LOAD DATA
INFILE emps.csv --csv文件名
append --操作类型,用 append 在表中追加新记录
INTO TABLE emp10 --插入记录表名
FIELDS TERMINATED BY "," --逗号分隔
(
virtual_column FILLER, --跳过由 PL/SQL Developer 生成的csv文件中,第一列序号
EMPNO "seq_eseq.nextval", --这一列直接取序列的下一值,而不用数据中提供的值
ENAME upper(:ENAME)", --,用SQL函数或运算对数据进行加工处理
JOB,
MGR,
HIREDATE date \'yyyy-mm-dd\', -- 指定接受日期的格式,相当用 to_date() 函数转换
SAL,
COMM,
DEPTNO
)
说明:在操作类型 append 位置可用以下中的一值:
1) insert --为缺省方式,在数据装载开始时要求表为空
2) append --在表中追加新记录
3) replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录
3.执行命令参数说明:
eg: sqlldr scott/brant@orcl control=emps.ctl log=emps.log skip=1
userid -- Oracle 的 username/password[@servicename]
control -- 控制文件,可能包含表的数据
-------------------------------------------------------------------------------------------------------
log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log
bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad
data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作
errors -- 允许的错误记录数,可以用他来控制一条记录都不能错
rows -- 多少条记录提交一次,默认为 64
skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描述
以上是关于oracle之数据同步:Oracle Sql Loader使用说明(大批量快速插入数据库记录)的主要内容,如果未能解决你的问题,请参考以下文章