Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評(píng)論 :: 0 Trackbacks
          外部表的建立
          ?
          ??? 外部表是在數(shù)據(jù)庫(kù)以外的文件系統(tǒng)上存儲(chǔ)的只讀表,例如EXCEL、CSV等文件
          ?
          ??? 建立外部表的步驟如下:
          ?
          ??? 1、創(chuàng)建以“,”分隔的文件“TestTable.csv”至“D:\Test
          ?
          ??? 2、創(chuàng)建一個(gè)Directory:
          ??? create directory TestTable_dir as 'D:\Test' ;
          ?
          ??? 3、創(chuàng)建一個(gè)外部表:

          ??? create table TestTable(

          ?????? ID varchar2 ( 10 ),

          ?????? NAME varchar2 ( 20 ),

          ?????? TYPE varchar2 ( 20 ),

          ?????? AGE varchar2 ( 20 ) )

          ??? organization external (

          ?????? type oracle_loader

          ?????? default directory TestTable_dir

          ?????? access parameters (fields terminated by ',' )

          ?????? location ( 'TestTable.csv' )

          ?????? );

          ?
          ??? 需要注意兩點(diǎn):
          ??? ● 使用number類型時(shí)須發(fā)查詢數(shù)據(jù)(不知道為什么)
          ??? ● 在建csv表時(shí)無(wú)需加表頭,否則會(huì)多出一行數(shù)據(jù)來(lái)
          ?
          ?
          各類參數(shù)說(shuō)明
          ?
          ??? 1、type oracle_loader
          ?
          ????? 數(shù)據(jù)轉(zhuǎn)換驅(qū)動(dòng)器,oracle_loader為默認(rèn),也可以改換其他
          ?
          ??? 2、defaultdirectory TestTable_dir
          ?????? location ('TestTable.csv')
          ?
          ????? 指定外部表所在文件夾以及指定文件
          ?
          ??? 3、accessparameters
          ?
          ????? 設(shè)置轉(zhuǎn)換參數(shù),例如(fields terminated by',') 表示以','為字段間的分隔符
          ????? ● 參數(shù)由訪問(wèn)驅(qū)動(dòng)程序定義
          ?
          ?
          外部表的錯(cuò)誤處理
          ?
          ??? 1、REJECT LIMIT 子句
          ?
          ????? 在創(chuàng)建外部表時(shí)最后加入LIMIT子句,表示可以允許錯(cuò)誤的發(fā)生個(gè)數(shù)。
          ????? * 默認(rèn)的REJECT LIMIT值為0
          ????? * REJECT LIMIT UNLIMITED則不會(huì)報(bào)錯(cuò)
          ?
          ??? 2、BADFILENOBADFILE 子句
          ?
          ????? 在accessparameters中加入BADFILE 'BAD_FILE.txt'子句,則所有數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤的值會(huì)被放入'BAD_FILE.txt'
          ????? 使用NOBADFILE子句則表示忽略轉(zhuǎn)換錯(cuò)誤的數(shù)據(jù)
          ?
          ????? ● 如果不寫(xiě)B(tài)ADFILE或NOBADFILE,則系統(tǒng)自動(dòng)在源目錄下生成與外部表同名的.BAD文件
          ????? ● BADFILE只能記錄前1次操作的結(jié)果,他會(huì)被第2次操作所覆蓋。
          ?
          ??? 3、LOGFILENOLOGFILE 子句
          ?
          ????? 在accessparameters中加入LOGFILE 'LOG_FILE.log'子句,則所有Oracle的錯(cuò)誤信息放入'LOG_FILE.log'
          ????? 使用NOLOGFILE子句則表示不記錄錯(cuò)誤信息 到log中
          ?
          ????? ● 如果不寫(xiě)LOGFILE或NOLOGFILE,則系統(tǒng)自動(dòng)在源目錄下生成與外部表同名的.LOG文件
          ?
          ?
          修改外部表語(yǔ)句
          ?
          ??? 外部表與堆表一樣可以之用ALTER TABLE命令修改表屬性
          ?
          ??? * REJECT LIMIT??????? --錯(cuò)誤數(shù)
          ??? * DEFAULT DIRECTORY?? --默認(rèn)目錄
          ??? * ACCESS PARAMETERS?? --參數(shù)
          ??? * LOCATION??????????? --數(shù)據(jù)文件
          ??? * ADD COLUMN????????? --增加列
          ??? * MODIFY COLUMN?????? --列定義
          ??? * DROP COLUMN???????? --刪除列
          ????* RENAME TO?????????? --外部表更名
          ?
          ?
          其他約束
          ?
          ??? ● 外部表無(wú)法使用insert、update、delete等操作,要修改其數(shù)據(jù)只能通過(guò)修改數(shù)據(jù)文件。
          ?
          ??? ● 外部表不能建立索引,如要建立,則需要先create table XX as select * from TestTable
          ?
          ?
          ?
          ?




          -The End-

          posted on 2008-10-13 17:54 decode360-3 閱讀(1925) 評(píng)論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 博白县| 固阳县| 兴海县| 西宁市| 宁乡县| 长兴县| 广安市| 洪洞县| 图们市| 尉犁县| 鄂伦春自治旗| 奉新县| 广安市| 伊宁县| 和硕县| 台湾省| 奇台县| 海兴县| 南安市| 吉林市| 象山县| 新竹县| 平乐县| 东宁县| 新绛县| 错那县| 临沭县| 娱乐| 古田县| 昌都县| 海阳市| 青铜峡市| 聂荣县| 西城区| 固镇县| 邹平县| 屯昌县| 新营市| 崇礼县| 花莲市| 秦皇岛市|