Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          外部表的建立
          ?
          ??? 外部表是在數據庫以外的文件系統上存儲的只讀表,例如EXCEL、CSV等文件
          ?
          ??? 建立外部表的步驟如下:
          ?
          ??? 1、創建以“,”分隔的文件“TestTable.csv”至“D:\Test
          ?
          ??? 2、創建一個Directory:
          ??? create directory TestTable_dir as 'D:\Test' ;
          ?
          ??? 3、創建一個外部表:

          ??? 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' )

          ??? ?? );

          ?
          ??? 需要注意兩點:
          ??? ● 使用number類型時須發查詢數據(不知道為什么)
          ??? ● 在建csv表時無需加表頭,否則會多出一行數據來
          ?
          ?
          各類參數說明
          ?
          ??? 1、type oracle_loader
          ?
          ????? 數據轉換驅動器,oracle_loader為默認,也可以改換其他
          ?
          ??? 2、defaultdirectory TestTable_dir
          ?????? location ('TestTable.csv')
          ?
          ????? 指定外部表所在文件夾以及指定文件
          ?
          ??? 3、accessparameters
          ?
          ????? 設置轉換參數,例如(fields terminated by',') 表示以','為字段間的分隔符
          ????? ● 參數由訪問驅動程序定義
          ?
          ?
          外部表的錯誤處理
          ?
          ??? 1、REJECT LIMIT 子句
          ?
          ????? 在創建外部表時最后加入LIMIT子句,表示可以允許錯誤的發生個數。
          ????? * 默認的REJECT LIMIT值為0
          ????? * REJECT LIMIT UNLIMITED則不會報錯
          ?
          ??? 2、BADFILENOBADFILE 子句
          ?
          ????? 在accessparameters中加入BADFILE 'BAD_FILE.txt'子句,則所有數據轉換錯誤的值會被放入'BAD_FILE.txt'
          ????? 使用NOBADFILE子句則表示忽略轉換錯誤的數
          ?
          ????? ● 如果不寫BADFILE或NOBADFILE,則系統自動在源目錄下生成與外部表同名的.BAD文件
          ????? ● BADFILE只能記錄前1次操作的結果,他會被第2次操作所覆蓋。
          ?
          ??? 3、LOGFILENOLOGFILE 子句
          ?
          ????? 在accessparameters中加入LOGFILE 'LOG_FILE.log'子句,則所有Oracle的錯誤信息放入'LOG_FILE.log'
          ????? 使用NOLOGFILE子句則表示不記錄錯誤信息 到log中
          ?
          ????? ● 如果不寫LOGFILE或NOLOGFILE,則系統自動在源目錄下生成與外部表同名的.LOG文件
          ?
          ?
          修改外部表語句
          ?
          ??? 外部表與堆表一樣可以之用ALTER TABLE命令修改表屬性
          ?
          ??? * REJECT LIMIT??????? --錯誤數
          ??? * DEFAULT DIRECTORY?? --默認目錄
          ??? * ACCESS PARAMETERS?? --參數
          ??? * LOCATION??????????? --數據文件
          ??? * ADD COLUMN????????? --增加列
          ??? * MODIFY COLUMN?????? --列定義
          ??? * DROP COLUMN???????? --刪除列
          ??? * RENAME TO?????????? --外部表更名
          ?
          ?
          其他約束
          ?
          ??? ● 外部表無法使用insert、update、delete等操作,要修改其數據只能通過修改數據文件。
          ?
          ??? ● 外部表不能建立索引,如要建立,則需要先create table XX as select * from TestTable
          ?
          ?
          ?
          ?
          posted on 2008-10-13 20:54 decode360 閱讀(261) 評論(0)  編輯  收藏 所屬分類: 07.Oracle
          主站蜘蛛池模板: 建昌县| 瑞金市| 沂源县| 无棣县| 玛纳斯县| 珠海市| 永城市| 扶绥县| 筠连县| 武夷山市| 肇源县| 广德县| 瑞丽市| 苗栗市| 门源| 交城县| 额敏县| 梁河县| 安多县| 翁源县| 仁化县| 汉寿县| 盘山县| 淳化县| 江油市| 开化县| 盖州市| 灵台县| 上饶县| 宁蒗| 玉山县| 榆林市| 满城县| 岳西县| 电白县| 台东县| 阳城县| 望奎县| 依兰县| 涟水县| 泰宁县|