最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle的SQLLDR用法簡(jiǎn)介

 更新時(shí)間:2023年07月03日 10:01:01   作者:OO好久不見(jiàn)OO  
這篇文章主要介紹了Oracle的SQLLDR用法簡(jiǎn)介,SQL*Loader是oracle的高速批量數(shù)據(jù)加載工具,這是一個(gè)非常有用的工具,可用于從多種平面文件格式向Oracle數(shù)據(jù)庫(kù)中加載數(shù)據(jù),SQLLDR可以在極短的時(shí)間內(nèi)加載數(shù)量龐大的數(shù)據(jù),需要的朋友可以參考下

SQLLDR導(dǎo)入

1.簡(jiǎn)介

SQL*LOADER是ORACLE的數(shù)據(jù)加載工具,通常用來(lái)將操作系統(tǒng)文件(數(shù)據(jù))遷移到ORACLE數(shù)據(jù)庫(kù)中。SQL*LOADER是大型數(shù)據(jù)倉(cāng)庫(kù)選擇使用的加載方法,因?yàn)樗峁┝俗羁焖俚耐緩剑―IRECT,PARALLEL)。

2.語(yǔ)法和參數(shù)

語(yǔ)法: SQLLDR keyword=value [,keyword=value,...];

Sqlldr 參數(shù)一覽

Keyword默認(rèn)值描述
useridORACLE 用戶名/口令      
control控制文件名
log日志文件名
bad錯(cuò)誤文件名
data數(shù)據(jù)文件名
discard廢棄文件名
discardmax全部允許廢棄的文件的數(shù)目
skip0要跳過(guò)的邏輯記錄的數(shù)目
load全部要加載的邏輯記錄的數(shù)目
errors允許的錯(cuò)誤的數(shù)目
rows常規(guī):64  默認(rèn)路徑:全部常規(guī)路徑綁定數(shù)組中或直接路徑保存數(shù)據(jù)間的行數(shù)
bindsize256000常規(guī)路徑綁定數(shù)組的大小
silent運(yùn)行過(guò)程中隱藏消息
directFALSE使用直接路徑
parfile參數(shù)文件: 包含參數(shù)說(shuō)明的文件的名稱
parallelFALSE執(zhí)行并行加載
file執(zhí)行文件
skip_unusable_indexesFALSE不允許/允許使用無(wú)用的索引或索引分區(qū)
skip_index_maintenanceFALSE沒(méi)有維護(hù)索引, 將受到影響的索引標(biāo)記為無(wú)用
commit_discontinuedFALSE提交加載中斷時(shí)已加載的行
readsize1048576讀取緩沖區(qū)的大小
external_tableNOT_USED使用外部表進(jìn)行加載; NOT_USED, GENERATE_ONLY, EXECUTE
columnarrayrows5000直接路徑列數(shù)組的行數(shù)
streamsize256000直接路徑流緩沖區(qū)的大小 (以字節(jié)計(jì))
multithreading在直接路徑中使用多線程
resumableFALSE啟用或禁用當(dāng)前的可恢復(fù)會(huì)話
resumable_name有助于標(biāo)識(shí)可恢復(fù)語(yǔ)句的文本字符串
resumable_timeout7200RESUMABLE 的等待時(shí)間 (以秒計(jì))
date_cache1000日期轉(zhuǎn)換高速緩存的大小 (以條目計(jì))

3. 范例

利用PLSQL生成測(cè)試數(shù)據(jù)cux_sqlldr_test.txt

BEGIN
? FOR iIN1..100
??? LOOP
????? IFMOD(i,2)=1THEN
??????? dbms_output.put_line('"'||i||'","column1_'||i||'",'||'"column2_'||i||'",'||'"column3_'||i||'",'||'"show_column_'||i||'",'||'"hide_column_'||i||'","2017-01-01"');?
????? ELSE
??????? dbms_output.put_line('"'||i||'","column1_'||i||'", ,'||'"column3_'||i||'",'||'"show_column_'||i||'",'||'"hide_column_'||i||'"');?????????
????? ENDIF;
??? ENDLOOP;
END;

建表

CREATETABLE cux.cux_sqlldr_test
(line_num?NUMBER,
?seq_num NUMBER,
?column1 VARCHAR2(30),
?column2 VARCHAR2(30)NOTNULL,
?column3 VARCHAR2(30)DEFAULT'column2',
?show_column VARCHAR2(30),
?hide_column VARCHAR2(30),
?creation_date DATE
);
CREATEORREPLACE?SYNONYM apps.cux_sqlldr_test?FOR cux.cux_sqlldr_test;
CREATESEQUENCE cux.cux_sqlldr_test_sSTARTWITH10001;
CREATEORREPLACESYNONYM apps.cux_sqlldr_test_s FOR cux.cux_sqlldr_test_s;

4.Sqlldr 有兩種使用方式

(1)在控制文件中包涵數(shù)據(jù).

創(chuàng)建一個(gè)文件命名為cux_sqlldr_test.ctl,在服務(wù)器下創(chuàng)建目錄Sqlldr,在sqlldr下創(chuàng)建log和bad文件夾,

上傳cux_sqlldr_test.ctl至服務(wù)器 ,如下圖所示: 

cux_sqlldr_test.ctl內(nèi)容如下:

OPTIONS (skip=3,rows=128)
load data?????
CHARACTERSET ZHS16GBK??
infile? *??????
badfile? "/u02/ebsuat/app/fs2/EBSapps/appl/cux/12.0.0/sqlldr/bad/cux_sqlldr_test.bad"
discardfile? "/u02/ebsuat/app/fs2/EBSapps/appl/cux/12.0.0/sqlldr/bad/cux_sqlldr_test.disc"?
TRUNCATE into table cux_sqlldr_test?
WHEN column1 != "column1_1"
Fields terminated by ","
Optionally enclosed by '"'
TRAILING NULLCOLS?
(
line_num? RECNUM ,
seq_num? "cux_sqlldr_test_s.nextval" ,
column1 ,
column2 ,
column3 NULLIF (column3="column3_4"),
show_column "UPPER(:show_column)" ,
hide_column? FILLER ,?
creation_date? DATE? 'YYYY-MM-DD' "CASE WHEN :creation_date is null THEN TO_CHAR(sysdate,'YYYY-MM-DD')? ELSE :creation_date END"
)
BEGINDATA
"1","column1_1","column2_1","column3_1","show_column_1","hide_column_1","2017-01-01"
"2","column1_2", ,"column3_2","show_column_2","hide_column_2"
"3","column1_3","column2_3","column3_3","show_column_3","hide_column_3","2017-01-01"
"4","column1_4", ,"column3_4","show_column_4","hide_column_4"
"5","column1_5","column2_5","column3_5","show_column_5","hide_column_5","2017-01-01"
"6","column1_6", ,"column3_6","show_column_6","hide_column_6"
"7","column1_7","column2_7","column3_7","show_column_7","hide_column_7","2017-01-01"
"8","column1_8", ,"column3_8","show_column_8","hide_column_8"
"9","column1_9","column2_9","column3_9","show_column_9","hide_column_9","2017-01-01"
"10","column1_10", ,"column3_10","show_column_10","hide_column_10"

運(yùn)行命令

sqlldr userid=apps/appsjiahuicontrol=/u02/ebsuat/app/fs2/EBSapps/appl/cux/12.0.0/sqlldr/file/cux_sqlldr_test.ctl  log=$CUX_TOP/sqlldr/file/cux_sqlldr_test.log

查看結(jié)果

查看表

由上圖可以看出,運(yùn)行命令后,在file文件夾下生成了cux_sqlldr_test.log,在bad下生成了cux_sqlldr_test.bad,在表中生成了3條記錄,下面分析一下cux_sqlldr_test.ctl的內(nèi)容和結(jié)果

代碼說(shuō)明
OPTIONS (skip=3,rows=128)sqlldr 的內(nèi)容可以寫在cotrol文件load_data的前面,此處跳過(guò)前3行,每次提交128行
load data     加載數(shù)據(jù)
CHARACTERSET ZHS16GBK  字符集編碼(如果出現(xiàn)亂碼要考慮一下)
infile  *      加載的文件,* 表示本文件
badfile 錯(cuò)誤的數(shù)據(jù)所放的文件(校驗(yàn)錯(cuò)誤)
discardfile丟棄的數(shù)據(jù)放的路徑(記錄的格式錯(cuò)誤或過(guò)濾行)
TRUNCATE into table cux_sqlldr_test 先TRUNCATE  cux_sqlldr_test再將記錄插入表
WHEN column1 != "column1_1"過(guò)濾行,對(duì)于值為column1_1的行過(guò)濾
Fields terminated by ","多個(gè)字段間用“,”隔開(kāi)
Optionally enclosed by '"'單個(gè)字段用“"”,“"”開(kāi)始結(jié)束
TRAILING NULLCOLS 對(duì)于值為空的字段允許為空
(line_num  RECNUM序號(hào),自動(dòng)生成,并不取自數(shù)據(jù)
seq_num  "cux_sqlldr_test_s.nextval"取每條記錄的第一個(gè)字段,此處應(yīng)為1..10,但是這里賦值序列。

表2

代碼說(shuō)明
column1column1
column2column2,表定義為非空字段,雖然上面允許為空,但是如果該值為空,不能插入表種
column3 NULLIF (column3="column3_4")column3="column3_4"時(shí)候默認(rèn)為空
show_column "UPPER(:show_column)" 大寫列(調(diào)用UPPER大寫函數(shù))
hide_column  FILLERFILLER 隱藏列
creation_date  DATE  'YYYY-MM-DD'"CASE WHEN :creation_date is null THENTO_CHAR(sysdate,'YYYY-MM-DD') ELSE :creation_date END"日期類型,格式為YYYY-MM-DD,為空的時(shí)候取系統(tǒng)日期
BEGINDATA數(shù)據(jù)開(kāi)始
*******數(shù)據(jù)內(nèi)容,默認(rèn)每行一條記錄

從日志可以看出7條數(shù)據(jù)中,4條記錄無(wú)法沒(méi)導(dǎo)入的原因。

查看cux_sqlldr_test.bad,其中記錄4條錯(cuò)誤的數(shù)據(jù)。

(2)在控制文件中不包涵數(shù)據(jù).

上傳cux_sqlldr_test.txt,cux_sqlldr_test.ctl至服務(wù)器,cux_sqlldr_test.txt由上面PLSQL腳本生成,cux_sqlldr_test.ctl如下

OPTIONS (skip=3,rows=128)
load data???? 
CHARACTERSET ZHS16GBK??
infile? "/u02/ebsuat/app/fs2/EBSapps/appl/cux/12.0.0/sqlldr/file/cux_sqlldr_test.txt"?????
badfile? "/u02/ebsuat/app/fs2/EBSapps/appl/cux/12.0.0/sqlldr/bad/cux_sqlldr_test.bad"
discardfile "/u02/ebsuat/app/fs2/EBSapps/appl/cux/12.0.0/sqlldr/bad/cux_sqlldr_test.disc"?
TRUNCATE into table cux_sqlldr_test?
WHEN column1 != "column1_4"
Fields terminated by ","
Optionally enclosed by '"'
TRAILING NULLCOLS?
(
line_num? RECNUM ,
seq_num? "cux_sqlldr_test_s.nextval" ,
column1 ,
column2 "nvl(:column2,'***')",
column3 NULLIF (column3="column3_4"),
show_column "UPPER(:show_column)" ,
hide_column? FILLER ,?
creation_date? DATE? 'YYYY-MM-DD' "CASE WHEN :creation_date is null THEN TO_CHAR(sysdate,'YYYY-MM-DD')? ELSE :creation_date END"
)

運(yùn)行命令

sqlldr userid=apps/appsjiahuicontrol=/u02/ebsuat/app/fs2/EBSapps/appl/cux/12.0.0/sqlldr/file/cux_sqlldr_test.ctl  log=$CUX_TOP/sqlldr/file/cux_sqlldr_test.log

100條數(shù)據(jù)由于skip = 3 從第4條開(kāi)始處理變成97條,第四條數(shù)據(jù)由于WHEN column1 != "column1_4"

被丟棄在bad的cux_sqlldr_test.disc路徑下,沒(méi)有錯(cuò)誤數(shù)據(jù)。查看表共96條數(shù)據(jù),如下圖所示:

 column2 "nvl(:column2,'***')", 對(duì)于 column2默認(rèn)為 “***” .

其他

此外,sqlload可以實(shí)現(xiàn)同時(shí)加載多個(gè)文件,同時(shí)把數(shù)據(jù)加載到多個(gè)表。

到此這篇關(guān)于Oracle的SQLLDR用法簡(jiǎn)介的文章就介紹到這了,更多相關(guān)Oracle SQLLDR內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • oracle中dblink查看、創(chuàng)建、使用以及刪除實(shí)例代碼

    oracle中dblink查看、創(chuàng)建、使用以及刪除實(shí)例代碼

    當(dāng)用戶要跨本地?cái)?shù)據(jù)庫(kù)訪問(wèn)另外一個(gè)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)時(shí),本地?cái)?shù)據(jù)庫(kù)中必須創(chuàng)建了遠(yuǎn)程數(shù)據(jù)庫(kù)的DBLINK,下面這篇文章主要給大家介紹了關(guān)于oracle中dblink查看、創(chuàng)建、使用以及刪除的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • CentOS6.2上安裝Oracle10g報(bào)ins_emdb.mk錯(cuò)誤處理方法

    CentOS6.2上安裝Oracle10g報(bào)ins_emdb.mk錯(cuò)誤處理方法

    oracle安裝過(guò)程報(bào)ins_emdb.mk錯(cuò)誤,此時(shí)繼續(xù)點(diǎn)擊“continue”即可,待Oracle完成安裝后,再手工執(zhí)行相應(yīng)腳本完成鏈接即可
    2014-09-09
  • Oracle如何直接運(yùn)行OS命令(下)

    Oracle如何直接運(yùn)行OS命令(下)

    Oracle如何直接運(yùn)行OS命令(下)...
    2007-03-03
  • 使用PLSQL遠(yuǎn)程連接Oracle數(shù)據(jù)庫(kù)的方法(內(nèi)網(wǎng)穿透)

    使用PLSQL遠(yuǎn)程連接Oracle數(shù)據(jù)庫(kù)的方法(內(nèi)網(wǎng)穿透)

    Oracle數(shù)據(jù)庫(kù)來(lái)源于知名大廠甲骨文公司,是一款通用數(shù)據(jù)庫(kù)系統(tǒng),能提供完整的數(shù)據(jù)管理功能,而Oracle數(shù)據(jù)庫(kù)時(shí)關(guān)系數(shù)據(jù)庫(kù)的典型代表,其數(shù)據(jù)關(guān)系設(shè)計(jì)完備,這篇文章主要介紹了使用PLSQL遠(yuǎn)程連接Oracle數(shù)據(jù)庫(kù)的方法(內(nèi)網(wǎng)穿透),需要的朋友可以參考下
    2023-03-03
  • windows系統(tǒng)下進(jìn)入oracle數(shù)據(jù)庫(kù)兩種方法

    windows系統(tǒng)下進(jìn)入oracle數(shù)據(jù)庫(kù)兩種方法

    這篇文章主要給大家介紹了關(guān)于windows系統(tǒng)下進(jìn)入oracle數(shù)據(jù)庫(kù)兩種方法的相關(guān)資料,Oracle數(shù)據(jù)庫(kù)是一款非常流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它被廣泛用于企業(yè)級(jí)應(yīng)用中,為了使用Oracle數(shù)據(jù)庫(kù),我們需要先進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)中,需要的朋友可以參考下
    2023-09-09
  • Oracle開(kāi)發(fā)之分析函數(shù)總結(jié)

    Oracle開(kāi)發(fā)之分析函數(shù)總結(jié)

    本文是對(duì)Oracle中分析函數(shù)做的總結(jié),主要總結(jié)了前幾篇關(guān)于分析函數(shù)、窗口函數(shù)、報(bào)表函數(shù)文章的內(nèi)容,需要的朋友可以參考下。
    2016-05-05
  • Oracle自我補(bǔ)充之trunc()函數(shù)的使用方法

    Oracle自我補(bǔ)充之trunc()函數(shù)的使用方法

    TRUNC函數(shù)為指定元素而截去的日期值。下面通過(guò)本文給大家介紹Oracle自我補(bǔ)充之trunc()函數(shù)的使用方法,感興趣的朋友一起看看吧
    2017-06-06
  • Oracle 中文字段進(jìn)行排序的sql語(yǔ)句

    Oracle 中文字段進(jìn)行排序的sql語(yǔ)句

    Oracle 中對(duì)中文字段進(jìn)行排序通常有三種方式
    2009-09-09
  • oracle用戶權(quán)限、角色管理詳解

    oracle用戶權(quán)限、角色管理詳解

    這篇文章主要介紹了oracle用戶權(quán)限、角色管理的使用和示例,需要的朋友可以參考下
    2014-04-04
  • Oracle授予普通用戶kill session權(quán)限的方法

    Oracle授予普通用戶kill session權(quán)限的方法

    本文介紹在Oracle數(shù)據(jù)庫(kù)中如何為普通用戶授予killsession權(quán)限,通過(guò)創(chuàng)建存儲(chǔ)過(guò)程并結(jié)合審計(jì)表,實(shí)現(xiàn)對(duì)阻塞會(huì)話的安全管理和記錄,提供具體SQL語(yǔ)句及運(yùn)行方法,需要的朋友可以參考下
    2025-10-10

最新評(píng)論

澄江县| 西和县| 巩义市| 离岛区| 正镶白旗| 阜新| 甘南县| 平邑县| 玉山县| 通道| 昌邑市| 新竹县| 上高县| 盐边县| 彭山县| 桑日县| 资兴市| 和田市| 华坪县| 庐江县| 蒙城县| 徐州市| 六枝特区| 安义县| 济源市| 新余市| 嘉黎县| 如东县| 罗山县| 织金县| 股票| 钦州市| 彩票| 云和县| 德保县| 化德县| 公安县| 三亚市| 普定县| 二连浩特市| 通江县|