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_sqlloader測試.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM