Oracle 高速批量數(shù)據(jù)加載工具sql*loader使用說明
更新時間:2012年12月16日 15:31:07 作者:
SQL*Loader(SQLLDR)是Oracle的高速批量數(shù)據(jù)加載工具,這是一個非常有用的工具,可用于多種平面文件格式向Oralce數(shù)據(jù)庫中加載數(shù)據(jù)
SQL*Loader(SQLLDR)是Oracle的高速批量數(shù)據(jù)加載工具。這是一個非常有用的工具,可用于多種平面文件格式向Oralce數(shù)據(jù)庫中加載數(shù)據(jù)。SQLLDR可以在極短的時間內(nèi)加載數(shù)量龐大的數(shù)據(jù)。它有兩種操作模式。
傳統(tǒng)路徑:(conventional path):SQLLDR會利用SQL插入為我們加載數(shù)據(jù)。
直接路徑(direct path):采用這種模式,SQLLDR不使用SQL;而是直接格式化數(shù)據(jù)庫塊。
利用直接路徑加載,你能從一個平面文件讀數(shù)據(jù),并將其直接寫至格式化的數(shù)據(jù)庫塊,而繞過整個SQL引擎和undo生成,同時還可能避開redo生成。要在一個沒有任何數(shù)據(jù)的數(shù)據(jù)庫中充分加載數(shù)據(jù),最快的方法就是采用并行直接路徑加載。
要使用SQLLDR,需要有一個控制文件(control file)。 控制文件中包含描述輸入數(shù)據(jù)的信息(如輸入數(shù)據(jù)的布局、數(shù)據(jù)類型等),另外還包含有關(guān)目標(biāo)表的信息??刂莆募踔吝€可以包含要加載的數(shù)據(jù)。
1. 新建一個控制文件demo1.ctl,內(nèi)容如下:
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要做什么(在這個例子中,則指示要加載數(shù)據(jù))。SQLLDR還可以執(zhí)行CONTINUE_LOAD,也就是繼續(xù)加載。
INFILE * :這會告訴SQLLDR所要加載的數(shù)據(jù)實際上包含在控制文件本身上,如第6~10行所示。也可以指定包含數(shù)據(jù)的另一個文件的文件名。
INTO TABLE DEPT :這會告訴SQLLDR要把數(shù)據(jù)加載到哪個表中(在這個例子中,數(shù)據(jù)要加載到DEPT表中)。
FIELDS TERMINATED BY ‘,':這會告訴SQLLDR數(shù)據(jù)的形式應(yīng)該是用逗號分隔的值。
(DEPTNO, DNAME, LOC) :這會告訴SQLLDR所要加載的列、這些列在輸入數(shù)據(jù)中的順序以及數(shù)據(jù)類型。這是指輸入流中數(shù)據(jù)的數(shù)據(jù)類型,而不是數(shù)據(jù)庫中的數(shù)據(jù)類型。在這個例子中,列的數(shù)據(jù)類型默認(rèn)為CHAR(255),這已經(jīng)足夠了。
BEGINDATA :這會告訴SQLLDR你已經(jīng)完成對輸入數(shù)據(jù)的描述,后面的行(第7~10行)是要加載到DEPT表的具體數(shù)據(jù)。
2. 創(chuàng)建一個空表dept
create table dept
( deptno number(2) constraint dept_pk primary key,
dname varchar2(14),
loc varchar2(13)
)
/
3. 加載數(shù)據(jù)
sqlldr userid=lwstest/netjava control=d:\demo1.ctl
傳統(tǒng)路徑:(conventional path):SQLLDR會利用SQL插入為我們加載數(shù)據(jù)。
直接路徑(direct path):采用這種模式,SQLLDR不使用SQL;而是直接格式化數(shù)據(jù)庫塊。
利用直接路徑加載,你能從一個平面文件讀數(shù)據(jù),并將其直接寫至格式化的數(shù)據(jù)庫塊,而繞過整個SQL引擎和undo生成,同時還可能避開redo生成。要在一個沒有任何數(shù)據(jù)的數(shù)據(jù)庫中充分加載數(shù)據(jù),最快的方法就是采用并行直接路徑加載。
要使用SQLLDR,需要有一個控制文件(control file)。 控制文件中包含描述輸入數(shù)據(jù)的信息(如輸入數(shù)據(jù)的布局、數(shù)據(jù)類型等),另外還包含有關(guān)目標(biāo)表的信息??刂莆募踔吝€可以包含要加載的數(shù)據(jù)。
1. 新建一個控制文件demo1.ctl,內(nèi)容如下:
復(fù)制代碼 代碼如下:
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要做什么(在這個例子中,則指示要加載數(shù)據(jù))。SQLLDR還可以執(zhí)行CONTINUE_LOAD,也就是繼續(xù)加載。
INFILE * :這會告訴SQLLDR所要加載的數(shù)據(jù)實際上包含在控制文件本身上,如第6~10行所示。也可以指定包含數(shù)據(jù)的另一個文件的文件名。
INTO TABLE DEPT :這會告訴SQLLDR要把數(shù)據(jù)加載到哪個表中(在這個例子中,數(shù)據(jù)要加載到DEPT表中)。
FIELDS TERMINATED BY ‘,':這會告訴SQLLDR數(shù)據(jù)的形式應(yīng)該是用逗號分隔的值。
(DEPTNO, DNAME, LOC) :這會告訴SQLLDR所要加載的列、這些列在輸入數(shù)據(jù)中的順序以及數(shù)據(jù)類型。這是指輸入流中數(shù)據(jù)的數(shù)據(jù)類型,而不是數(shù)據(jù)庫中的數(shù)據(jù)類型。在這個例子中,列的數(shù)據(jù)類型默認(rèn)為CHAR(255),這已經(jīng)足夠了。
BEGINDATA :這會告訴SQLLDR你已經(jīng)完成對輸入數(shù)據(jù)的描述,后面的行(第7~10行)是要加載到DEPT表的具體數(shù)據(jù)。
2. 創(chuàng)建一個空表dept
復(fù)制代碼 代碼如下:
create table dept
( deptno number(2) constraint dept_pk primary key,
dname varchar2(14),
loc varchar2(13)
)
/
3. 加載數(shù)據(jù)
復(fù)制代碼 代碼如下:
sqlldr userid=lwstest/netjava control=d:\demo1.ctl
您可能感興趣的文章:
- Oracle批量插入數(shù)據(jù)的三種方式【推薦】
- C# Oracle批量插入數(shù)據(jù)進(jìn)度條的實現(xiàn)代碼
- Oracle + Mybatis實現(xiàn)批量插入、更新和刪除示例代碼
- MyBatis批量插入數(shù)據(jù)到Oracle數(shù)據(jù)庫中的兩種方式(實例代碼)
- Oracle兩張表關(guān)聯(lián)批量更新其中一張表的數(shù)據(jù)
- Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率
- mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)
- Oracle批量導(dǎo)入文本文件快速的方法(sqlldr實現(xiàn))
- Oracle+Mybatis的foreach insert批量插入報錯的快速解決辦法
- Java實現(xiàn)mybatis批量插入數(shù)據(jù)到Oracle
- Oracle批量執(zhí)行sql語句之禁用所有表的外鍵
- oracle+mybatis 使用動態(tài)Sql當(dāng)插入字段不確定的情況下實現(xiàn)批量insert
- Oracle數(shù)據(jù)庫更新大批量數(shù)據(jù)案例
相關(guān)文章
六分鐘學(xué)會創(chuàng)建Oracle表空間的實現(xiàn)步驟
這里介紹創(chuàng)建Oracle表空間的步驟,首先查詢空閑空間、增加Oracle表空間、修改文件大小語句如下、創(chuàng)建Oracle表空間,最后更改自動擴(kuò)展屬性2013-06-06
深入淺析Orcale的nvl函數(shù)和SQL Server的isnull函數(shù)
這篇文章主要介紹了Orcale的nvl函數(shù)和SQL Server的isnull函數(shù)的相關(guān)資料,需要的朋友可以參考下2017-10-10
Oracle數(shù)據(jù)庫由dataguard備庫引起的log file sync等待問題
這篇文章主要介紹了Oracle數(shù)據(jù)庫由dataguard備庫引起的log file sync等待,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
Oracle數(shù)據(jù)庫tnsnames.ora文件的作用和配置
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫tnsnames.ora文件的作用和配置,tnsnames.ora 是一個oracle數(shù)據(jù)庫網(wǎng)絡(luò)配置文件,通過這個配置文件才能建立對數(shù)據(jù)庫的連接,需要的朋友可以參考下2024-06-06
ORACLE數(shù)據(jù)庫查看執(zhí)行計劃的方法
基于ORACLE的應(yīng)用系統(tǒng)很多性能問題,是由應(yīng)用系統(tǒng)SQL性能低劣引起的,所以,SQL的性能優(yōu)化很重要,分析與優(yōu)化SQL的性能我們一般通過查看該SQL的執(zhí)行計劃,本文就如何看懂執(zhí)行計劃,以及如何通過分析執(zhí)行計劃對SQL進(jìn)行優(yōu)化做相應(yīng)說明2012-05-05
ORACLE創(chuàng)建DBlink的過程及使用方法
這篇文章主要介紹了ORACLE DBlink的創(chuàng)建和使用,本文通過實例代碼給大家給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
解決Oracle ORA-01017:invalid username/password:logon
這篇文章主要介紹了解決Oracle ORA-01017:invalid username/password:logon denied的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05

