Oracle資料庫SqlLoad常用技巧總結

2021-07-06 08:43:39 字數 4120 閱讀 9126

ad:【線下活動】三大新銳html 5企業匯聚51cto—大話移動前端技術

oracle資料庫sqlload常用技巧的相關知識是本文我們主要要介紹的內容,本文我們總結了14種sqlload的使用技巧,並給出了測試用的檔案原始碼,接下來我們就開始一一介紹這部分內容,希望能夠對您有所幫助。

1、控制檔案中注釋用「–」。

2、為防止匯入出現中文亂碼,在控制檔案中加入字符集控制

load data characterset zhs16gbk

3、讓某一列成為行號,用recnum關鍵字

load data infile * into table t replace ( seqno recnum //載入每行的行號 text position(1:1024)) begindata fsdfasj

4、過濾某一列,用filler關鍵字

load data truncate into table t1 fields terminated by 『,』 ( field1, field2 filler, field3 )

5、過濾行

在into table table_name後加when過濾條件,但功能有限,如果以豎線分隔符的檔案,不能實現字段級的過濾,定長的還好。

sqlldr sms/admin control=test.ctl skip=1

7、trailing nullcols的使用,作用是表的字段沒有對應的值時允許為空

如:load data infile * into table dept replace fields terminated by 『,』 trailing nullcols // 其實下面的entire_line在begindata後面的資料中是沒有直接對應的列的值的如果第一行改為 10,sales,virginia,1/5/2000,, 就不用trailing nullcols了 (deptno, dname 「upper(:dname)」, // 使用函式 loc 「upper(:loc)」, last_updated date 『dd/mm/yyyy』, // 日期的一種表達方式 還有』dd-mon-yyyy』 等 entire_line 「:deptno||:dname||:loc||:last_updated」 ) begindata 10,sales,virginia,1/5/2000 20,accounting,virginia,21/6/1999 30,consulting,virginia,5/1/2000 40,finance,virginia,15/3/2001

8、新增、修改資料

(1)、

load data infile * into table tmp_test ( rec_no 「my_db_sequence.nextval」, region constant 『31』, time_loaded 「to_char(sysdate, 『hh24:mi』)」, data1 position(1:5) 「:data1/100」, data2 position(6:15) 「upper(:data2)」, data3 position(16:22)」to_date(:data3, 『yymmdd』)」 ) begindata 11111aaaaaaaaaa991201 22222bbbbbbbbbb990112

(2)、

通過關鍵字concatenate 把幾行的記錄看成一行記錄:

load data infile * concatenate 3 // 通過關鍵字concatenate 把幾行的記錄看成一行記錄 into table dept replace fields terminated by 『,』 (deptno, dname 「upper(:dname)」, loc 「upper(:loc)」, last_updated date 『dd/mm/yyyy』 ) begindata 10,sales, // 其實這3行看成一行 10,sales,virginia,1/5/2000 virginia, 1/5/2000

10、用」|+|」分隔符,避免資料混淆:fields terminated by 「|+|」

11、如果資料檔案包含在控制檔案中,用infile *

如下:(1)、

load data infile * into table tab1 when tab = 『tab1』 ( tab filler char(4), col1 integer ) into table tab2 when tab = 『tab2』 ( tab filler position(1:4), col1 integer ) begindata tab1|1 tab1|2 tab2|2 tab3|3 **********====

(2)、

load data infile 『mydata.dat』 replace into table emp when empno != 』 』 ( empno position(1:4) integer external, ename position(6:15) char, deptno position(17:18) char, mgr position(20:23) integer external ) into table proj when projno != 』 』 ( projno position(25:27) integer external, empno position(1:4) integer external )

14、過濾掉的資料檔案路徑指定

yesterday/ap_contract_

yesterday.log bad=/home/oracle/aps_load/bad/due_bill_$yesterday.bad rows=10000 readsize=20000000 bindsize=20000000 discard=/home/oracle/aps_load/bad/discard_ts.dis

15、附:測試用控制檔案

load data infile 『/home/oracle/aps_load/dat/aps_ap_contract.dat』 truncate into table ap_contract when (01)<>』1』 fields terminated by 「|」 trailing nullcols ( agmt_no 「(trim(:agmt_no ))」, contract_no filler, – 「(trim(:contract_no ))」, loan_amt 「(trim(:loan_amt ))」, agmt_holder 「(trim(:agmt_holder ))」, loan_type_cd 「(trim(:loan_type_cd ))」, curr_cd 「(trim(:curr_cd ))」, balance 「(trim(:balance ))」, loan_dirc_cd 「(trim(:loan_dirc_cd ))」, agmt_start_date 「(trim(:agmt_start_date ))」, agmt_end_date 「(trim(:agmt_end_date ))」, agmt_belong_org_no 「(trim(:agmt_belong_org_no ))」, manager_no 「(trim(:manager_no ))」, process_rate 「(trim(:process_rate ))」, insure_meth_type_cd 「(trim(:insure_meth_type_cd ))」, agmt_sign_date 「(trim(:agmt_sign_date ))」, loan_prop_cd 「(trim(:loan_prop_cd ))」, loan_use_type 「(trim(:loan_use_type ))」, entrust_loan_flag 「(trim(:entrust_loan_flag ))」, entrust_name 「(trim(:entrust_name ))」, farm_loan_flag 「(trim(:farm_loan_flag ))」, farm_loan_type_cd 「(trim(:farm_loan_type_cd ))」, loan_biz_type_cd 「(trim(:loan_biz_type_cd ))」, id_test recnum , char_test constant 『31』, sq 「sqlldr.nextval」, test_4 「to_char(sysdate,』yyyymmdd hh24:mi:ss』)」, test_5 「(trim(:loan_biz_type_cd)||』—』||trim(:agmt_no))」 )

關於oracle資料庫sqlload常用技巧的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收穫!

oracle資料庫賦權 Oracle資料庫許可權

oracle資料庫許可權基本認識 一 oracle許可權 oracle系統提供三種許可權 object 物件級 system 系統級 role 角色級。許可權分類 1 系統許可權 系統規定使用者使用資料庫的許可權。系統許可權是對使用者而言 2 實體許可權 某種許可權使用者對其它使用者的表或檢視的訪問...

oracle資料庫和資料庫例項

oracle中的資料庫和資料庫例項 oracle的體系結構簡單來分的話,分成2部分 資料庫 database 和資料庫例項 database instance 這是個容易搞糊塗的概念,在sql server裡面,你在你的機器上安裝一次sql server,那麼你就等於安裝了一次資料庫例項,在這個例項...

資料庫 Oracle中建立資料庫

create database lihua 網上的說法是 oracle中的例項只對應乙個資料庫,出現此種情況說明oracle資料庫處於mount 裝載 或open狀態,需要使用startup nomount語句進行狀態更改,或者是直接使用dbca的圖形介面來建立 注 經測試,startup nomo...