Oracle的外部表格也可以用來卸載資料__Oracle

來源:互聯網
上載者:User

   從10.2中開始,Oracle增加了外部表格的一個新的訪問驅動:ORACLE_DATAPUMP。而再次之前,只有一個預設的驅動ORACLE_LOADER。

  使用ORACLE_DATAPUMP驅動,帶來的一個優點是,可以利用外部表格將資料庫中的資料卸載到磁碟檔案中,而這是10.1及以前版本所無法做到的。

  下面看一個最簡單的例子:

 SQL> CREATE TABLE T_EXTERNAL
  2 (
  3 ID,
  4 NAME
  5 )
  6 ORGANIZATION EXTERNAL
  7 (
  8 TYPE ORACLE_DATAPUMP
  9 DEFAULT DIRECTORY D_OUTPUT
  10 LOCATION('TEST.DMP')
  11 )
  12 AS SELECT ROWNUM RN, TNAME
  13 FROM TAB;
  


表已建立。
  在這張外部表格建立的同時,在D_OUTPUT所指向的作業系統目錄下,產生了一個TEST.DMP二進位檔案。
  顯示這個二進位檔案中的可顯示字元:


 $ strings TEST.DMP
  IBMPC/WIN_NT-8.1.0
  ZHS16GBK
  LBB EMB GHC JWD SD EBE WMF DDG JG SJH SRH JGK CL EGM BJM RAP RLP RP KR PAR MS MRS JLS CET HLT
  10.02.00.01.00
  T
  1
  0
  3
  0
  ZHS16GBK
  AL16UTF16
  +00:00
  YANGTK
  T_EXTERNAL
  1
  0
  ID
  2
  22
  0
  -127
  0
  0
  0
  2
  0
  NAME
  1
  30
  0
  0
  852
  1
  30
  T_LOG<
  TEST_LOB<
  T_COMPRESS<
  T_TEMP2<
  T_RECORD<
  T_SESSION_STAT<
  T_TEMP<
  T_NO_EXISTS_BEFORE<
  T_CHAR<
  SYS_EXPORT_SCHEMA_01<
  T_EXTERNAL<
  T_LOAD_SPACE<
  T_LEVEL<
  T_LEVEL1<
  CHAINED_ROWS<
  T_TREE  

 
這個二進位檔案可以用於在其他資料庫中建立外部表格:

SQL> CREATE TABLE T_EXTERNAL
  2 (
  3 ID NUMBER,
  4 NAME VARCHAR2(30)
  5 )
  6 ORGANIZATION EXTERNAL
  7 (
  8 TYPE ORACLE_DATAPUMP
  9 DEFAULT DIRECTORY D_OUTPUT
  10 LOCATION('TEST.DMP')
  11 );


  表已建立。

SQL> SELECT * FROM T_EXTERNAL;
  ID NAME
  ---------- ------------------------------
  1 T_LOG
  2 TEST_LOB
  3 T_COMPRESS
  4 T_TEMP2
  5 T_RECORD
  6 T_SESSION_STAT
  7 T_TEMP
  8 T
  9 T_NO_EXISTS_BEFORE
  10 T_CHAR
  11 SYS_EXPORT_SCHEMA_01
  12 T_EXTERNAL
  13 T_LOAD_SPACE
  14 T_LEVEL
  15 T_LEVEL1
  16 CHAINED_ROWS
  17 T_TREE


  已選擇17行。

  唯一可惜的是Oracle只能將資料寫為二進位格式,因此可以考慮使用這種方法進行資料移轉或發布。不過想利用這種方法來產生文本報表也是行不通的。

  最後提一下,外部表格是唯讀表,可以利用外部表格卸載資料,不過必須在建表時完成,一旦表建立成功,外部表格就變成不可修改了。

 SQL> INSERT INTO T_EXTERNAL VALUES (100, 'A');
 INSERT INTO T_EXTERNAL VALUES (100, 'A')


  *第 1 行出現錯誤:

  ORA-30657: 操作在外部組織表上不受支援

  SQL> DROP TABLE T_EXTERNAL;

  表已刪除。

 SQL> CREATE TABLE T_EXTERNAL
  2 (
  3 ID NUMBER,
  4 NAME VARCHAR2(30)
  5 )
  6 ORGANIZATION EXTERNAL
  7 (
  8 TYPE ORACLE_DATAPUMP
  9 DEFAULT DIRECTORY D_OUTPUT
  10 LOCATION('TEST1.DMP')
  11 );


  表已建立。

SQL> INSERT INTO T_EXTERNAL VALUES (1, 'A');
INSERT INTO T_EXTERNAL VALUES (1, 'A')


  *第 1 行出現錯誤:

  ORA-30657: 操作在外部組織表上不受支援

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.