SQL*Loader(SQLLDR)是Oracle的高速批量數據加載工具。這是一個非常有用的工具,可用于多種平面文件格式向Oralce數據庫中加載數據。SQLLDR可以在極短的時間內加載數量龐大的數據。它有兩種操作模式。
傳統路徑:(conventional path):SQLLDR會利用SQL插入為我們加載數據。
直接路徑(direct path):采用這種模式,SQLLDR不使用SQL;而是直接格式化數據庫塊。
利用直接路徑加載,你能從一個平面文件讀數據,并將其直接寫至格式化的數據庫塊,而繞過整個SQL引擎和undo生成,同時還可能避開redo生成。要在一個沒有任何數據的數據庫中充分加載數據,最快的方法就是采用并行直接路徑加載。
要使用SQLLDR,需要有一個控制文件(control file)。 控制文件中包含描述輸入數據的信息(如輸入數據的布局、數據類型等),另外還包含有關目標表的信息。控制文件甚至還可以包含要加載的數據。
1. 新建一個控制文件demo1.ctl,內容如下:
復制代碼 代碼如下:
LOAD DATA
INFILE *
INTO TABLE DEPT
FIELDS TERMINATED BY ','
(DEPTNO, DNAME, LOC )
BEGINDATA
10,Sales,Virginia
20,Accounting,Virginia
30,Consulting,Virginia
40,Finance,Virginia
LOAD DATA :這會告訴SQLLDR要做什么(在這個例子中,則指示要加載數據)。SQLLDR還可以執行CONTINUE_LOAD,也就是繼續加載。
INFILE * :這會告訴SQLLDR所要加載的數據實際上包含在控制文件本身上,如第6~10行所示。也可以指定包含數據的另一個文件的文件名。
INTO TABLE DEPT :這會告訴SQLLDR要把數據加載到哪個表中(在這個例子中,數據要加載到DEPT表中)。
FIELDS TERMINATED BY ‘,':這會告訴SQLLDR數據的形式應該是用逗號分隔的值。
(DEPTNO, DNAME, LOC) :這會告訴SQLLDR所要加載的列、這些列在輸入數據中的順序以及數據類型。這是指輸入流中數據的數據類型,而不是數據庫中的數據類型。在這個例子中,列的數據類型默認為CHAR(255),這已經足夠了。
BEGINDATA :這會告訴SQLLDR你已經完成對輸入數據的描述,后面的行(第7~10行)是要加載到DEPT表的具體數據。
2. 創建一個空表dept
復制代碼 代碼如下:
create table dept
( deptno number(2) constraint dept_pk primary key,
dname varchar2(14),
loc varchar2(13)
)
/
3. 加載數據
復制代碼 代碼如下:
sqlldr userid=lwstest/netjava control=d:\demo1.ctl
您可能感興趣的文章:- Oracle批量插入數據的三種方式【推薦】
- C# Oracle批量插入數據進度條的實現代碼
- Oracle + Mybatis實現批量插入、更新和刪除示例代碼
- MyBatis批量插入數據到Oracle數據庫中的兩種方式(實例代碼)
- Oracle兩張表關聯批量更新其中一張表的數據
- Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率
- mybatis執行批量更新batch update 的方法(oracle,mysql兩種)
- Oracle批量導入文本文件快速的方法(sqlldr實現)
- Oracle+Mybatis的foreach insert批量插入報錯的快速解決辦法
- Java實現mybatis批量插入數據到Oracle
- Oracle批量執行sql語句之禁用所有表的外鍵
- oracle+mybatis 使用動態Sql當插入字段不確定的情況下實現批量insert
- Oracle數據庫更新大批量數據案例