日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

SQL*Loader 笔记 (一) 热身练习

發(fā)布時(shí)間:2025/5/22 数据库 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL*Loader 笔记 (一) 热身练习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SQL*Loader是加載數(shù)據(jù)的主流方法
傳統(tǒng)路徑:SQLLDR會(huì)利用SQL插入的方式加載數(shù)據(jù)
直徑路徑:直接格式化數(shù)據(jù)塊

從一個(gè)平面文件讀取數(shù)據(jù),并將其直接寫至格式化的數(shù)據(jù)庫(kù)塊,而繞開整個(gè)SQL引擎,同時(shí)還能避免redo、undo的生成。要在一個(gè)沒有任何數(shù)據(jù)的數(shù)據(jù)庫(kù)中充分加載數(shù)據(jù),最快的方法就是采用并行直接路徑加載

外部表:允許訪問操作系統(tǒng)文件,就好像它們是數(shù)據(jù)庫(kù)表一樣

數(shù)據(jù)卸載技術(shù)

平面文件卸載(flat file unload) 數(shù)據(jù)泵卸載(data pump unload)

實(shí)驗(yàn)1

文件路徑 [oracle@node1 mysqlldr]$ pwd /home/oracle/mysqlldr [oracle@node1 mysqlldr]$ ll total 16 -rw-r--r-- 1 oracle oinstall 76 Jul 22 09:53 afiedt.buf -rw-r--r-- 1 oracle oinstall 173 Jul 22 09:56 demo1.ctl -rw-r--r-- 1 oracle oinstall 1611 Jul 22 09:57 demo1.log -rw-r--r-- 1 oracle oinstall 111 Jul 22 09:47 dept.sql配置文件demo1.ctl [oracle@node1 mysqlldr]$ cat 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 [oracle@node1 mysqlldr]$創(chuàng)建表腳本 [oracle@node1 mysqlldr]$ cat dept.sql create table dept (deptno number(2) constraint dept_pk primary key, dname varchar2(14), loc varchar2(13) ) /執(zhí)行命令 sqlldr userid=alex/alex control=/home/oracle/mysqlldr/demo1.ctl

實(shí)驗(yàn)2

配置文件中第四條記錄的最后一個(gè)字段有很多的字符 [oracle@node1 mysqlldr]$ cat demo2.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 text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more清空之前插入的數(shù)據(jù) ALEX@devdb1 >truncate table dept;執(zhí)行命令 [oracle@node1 mysqlldr]$ sqlldr userid=alex/alex control=/home/oracle/mysqlldr/demo2.ctl在demo2.log中出現(xiàn)了exceeds maximum length 最大長(zhǎng)度不夠 [oracle@node1 mysqlldr]$ cat demo2.logColumn Name Position Len Term Encl Datatype ------------------------------ ---------- ----- ---- ---- --------------------- DEPTNO FIRST * , CHARACTER DNAME NEXT * , CHARACTER LOC NEXT * , CHARACTERRecord 4: Rejected - Error on table DEPT, column LOC. Field in data file exceeds maximum lengthTable DEPT:3 Rows successfully loaded.1 Row not loaded due to data errors.0 Rows not loaded because all WHEN clauses were failed.0 Rows not loaded because all fields were null.數(shù)據(jù)只成功加載3條,最后一條沒有成功 ALEX@devdb1 >select * from dept;DEPTNO DNAME LOC ---------- ------------------------------------------ ---------------------------------------10 Sales Virginia20 Accounting Virginia30 Consulting Virginiademo2.bad文件中記錄了加載失敗的數(shù)據(jù) [oracle@node1 mysqlldr]$ cat demo2.bad 40,Finance,Virginia text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more修改控制文件demo2.ctl,將char默認(rèn)的255擴(kuò)展到1000 [oracle@node1 mysqlldr]$ cat demo2.ctl LOAD DATA INFILE * INTO TABLE DEPT FIELDS TERMINATED BY ',' (DEPTNO,DNAME ,LOC char(1000)) BEGINDATA 10,Sales,Virginia 20,Accounting,Virginia 30,Consulting,Virginia 40,Finance,Virginia text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text moretext more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text more text moretext more text more text more text more更改表dept的字段loc為varchar2(1000) ALEX@devdb1 >alter table dept modify loc varchar2(1000);Table altered.ALEX@devdb1 >desc dept;Name Null? Type----------------------------------------- -------- ----------------------------DEPTNO NOT NULL NUMBER(2)DNAME VARCHAR2(14)LOC VARCHAR2(1000)

清空表后重新加載

truncate table dept;$ sqlldr userid=alex/alex control=/home/oracle/mysqlldr/demo2.ctl

驗(yàn)證結(jié)果插入成功

select * from dept;DEPTNO DNAME ---------- ------------------------------------------ LOC --------------------------------------------------------------------------------10 Sales Virginia20 Accounting Virginia30 Consulting VirginiaDEPTNO DNAME ---------- ------------------------------------------ LOC --------------------------------------------------------------------------------40 Finance Virginia text more text more text more text more text more text more text more t ext more text more text more text more text more text more text more text more t ext moretext more text more text more text more text more text more text more te xt more text more text more text more text more text more text more text more te xt more text more text more text more text moretext more text more text more tex t more text more text more text more text moretext more text more text more textmore text m ore text more text more text more text more text more text more textmore text more text more text more text more text more text more text more textDEPTNO DNAME ---------- ------------------------------------------ LOC --------------------------------------------------------------------------------more text more text more text more text more text more text more text more textmoretext more text more text more text more

實(shí)驗(yàn)3

配置文件中加入選項(xiàng)“ ”區(qū)域中代表一個(gè)完整的字段,可忽略其中的,號(hào)。

如果字段中含有”,需要用”“來替代 [oracle@node1 mysqlldr]$ cat demo3.ctl LOAD DATA INFILE * INTO TABLE DEPT FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (DEPTNO,DNAME,LOC) BEGINDATA 10,Sales,"Virginia,USA" 20,Accounting,"Va,""USA""" 30,Consulting,Virginia 40,Finance,VirginiaALEX@devdb1 >select * from dept;DEPTNO DNAME LOC ---------- ---------- --------------------10 Sales Virginia,USA <===字段中包含分隔符 , 20 Accounting Va,”USA” <===字段中包含” 30 Consulting Virginia40 Finance Virginia

實(shí)驗(yàn)4 使用FILLER參數(shù)來過濾掉不需要的列

[oracle@node1 mysqlldr]$ cp demo3.ctl demo4.ctl [oracle@node1 mysqlldr]$ vi demo4.ctlLOAD DATA INFILE * INTO TABLE DEPT FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (DEPTNO,DNAME,LOC,dummy1 filler) BEGINDATA 10,Sales,"Virginia,USA",haha 20,Accounting,"Va,""USA""",haha 30,Consulting,Virginia,haha 40,Finance,Virginia,hahatruncate table dept;sqlldr userid=alex/alex control=/home/oracle/mysqlldr/demo4.ctl[oracle@node1 mysqlldr]$ cat demo4.logColumn Name Position Len Term Encl Datatype ------------------------------ ---------- ----- ---- ---- --------------------- DEPTNO FIRST * , O(") CHARACTER DNAME NEXT * , O(") CHARACTER LOC NEXT * , O(") CHARACTER DUMMY1 NEXT * , O(") CHARACTER (FILLER FIELD)[oracle@node1 mysqlldr]$ sqlplus alex/alexALEX@devdb1 >select * from dept;DEPTNO DNAME LOC ---------- --------------- ---------------10 Sales Virginia,USA20 Accounting Va,"USA"30 Consulting Virginia40 Finance Virginia

實(shí)驗(yàn)5 日期類型的加載

ALEX@devdb1 >alter table dept add last_updated date;Table altered.ALEX@devdb1 >desc dept;Name Null? Type----------------------------------------- -------- ----------------------------DEPTNO NOT NULL NUMBER(2)DNAME VARCHAR2(14)LOC VARCHAR2(1000)LAST_UPDATED DATE[oracle@node1 mysqlldr]$ cat demo5.ctl LOAD DATA INFILE * INTO TABLE DEPT FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (DEPTNO,DNAME,LOC,LAST_UPDATED date 'yyyy-mm-dd') BEGINDATA 10,Sales,Virginia,2014-05-01 20,Accounting,"Va,""USA""",2014-06-03 30,Consulting,Virginia,2014-07-22 40,Finance,Virginia,2014-07-23[oracle@node1 mysqlldr]$ sqlldr userid=alex/alex control=/home/oracle/mysqlldr/demo5.ctlcol dname for a15 col loc for a15select * from dept;DEPTNO DNAME LOC LAST_UPDATED ---------- --------------- --------------- -------------------10 Sales Virginia 2014/05/01 00:00:0020 Accounting Va,"USA" 2014/06/03 00:00:0030 Consulting Virginia 2014/07/22 00:00:0040 Finance Virginia 2014/07/23 00:00:00

實(shí)驗(yàn)6 函數(shù)加載

[oracle@node1 mysqlldr]$ cat demo6.ctl LOAD DATA INFILE * INTO TABLE DEPT REPLACE FIELDS TERMINATED BY ',' (DEPTNO, DNAME "upper(:dname)", LOC "upper(:loc), LAST_UPDATED date 'yyyy-mm-dd') BEGINDATA 10,Sales,Virginia,1998-09-01 20,Accounting,Virginia,2002-08-09 30,Consulting,Virginia,2008-08-08 40,Finance,Virginia,2014-06-03[oracle@node1 mysqlldr]$ sqlldr userid=alex/alex control=demo6.ctl ALEX@devdb1 >select * from dept;DEPTNO DNAME LOC LAST_UPDATED ---------- --------------- --------------- -------------------10 SALES VIRGINIA 1998/09/01 00:00:0020 ACCOUNTING VIRGINIA 2002/08/09 00:00:0030 CONSULTING VIRGINIA 2008/08/08 00:00:0040 FINANCE VIRGINIA 2014/06/03 00:00:00

本文轉(zhuǎn)自ICT時(shí)空 dbasdk博客,原文鏈接: SQL*Loader 筆記 (一) 熱身練習(xí),如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原博主。

總結(jié)

以上是生活随笔為你收集整理的SQL*Loader 笔记 (一) 热身练习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。