利用SQL *Plus復制遺留的Oracle數據表
來源:易賢網 閱讀:983 次 日期:2015-03-20 11:20:58
溫馨提示:易賢網小編為您整理了“利用SQL *Plus復制遺留的Oracle數據表”,方便廣大網友查閱!

你可能運行的是Oracle 10g Release 2數據庫服務器,但是需要支持某些應用程序可能是很早之前寫好的。在Oracle 8i之前的版本創(chuàng)建的數據表常用LONG數據類型來存儲大型文本。

隨著Large Object(LOB)數據類型的引入,LONG和LONG RAW數據類型就被拋棄了。如果你要復制使用了LONG數據類型的數據表,那么使用CREATE TABLE AS SELECT語法將不能完成任務,這時將會返回錯誤:ORA-00997: illegal use of LONG 數據類型。

你可以導出該表然后再導入它,但是這樣要做大量的工作。SQL*PLUS中的COPY命令仍舊可以使用一條命令來完成對此類數據表的復制。下面是使用COPY命令的格式(注意使用短線“-”來換行):

COPY FROM TO CREATE tablename -

USING select-statement;

不過在Oracle 8.0版本COPY命令的功能被凍結,因為它只能復制有下列數據類型組成的數據表:CHAR,DATE,LONG,NUMBER和VARCHAR2。在8i版本中增加了新的數據類型而后者不支持,這完全是一個繼承的方法。

SQL> CREATE TABLE my_views AS 2

SELECT * FROM user_views;

SELECT * FROM user_views *

ERROR at line 2:

ORA-00997: illegal use of LONG datatype

SQL> SET LONG 100000

SQL> COPY FROM CREATE my_views -

>USING select * from user_views;

Array fetch/bind size is 15.

(arraysize is 15)Will commit

when done. (copycommit is 0)

Maximum long size is 100000.

(long is 100000)

Table MY_VIEWS created.

1 rows selected from .

1 rows inserted into MY_VIEWS.

1 rows committed into MY_VIEWS at

DEFAULT HOST connection.

SQL> descmy_views; Name

Null? Type ----------------------

------------------- -------- -------

---------------------

VIEW_NAME NOT NULL VARCHAR2(30)

TEXT_LENGTH NUMBER(38)

TEXT LONG

TYPE_TEXT_LENGTH NUMBER(38)

TYPE_TEXT VARCHAR2(4000)

OID_TEXT_LENGTH NUMBER(38)

OID_TEXT VARCHAR2(4000)

VIEW_TYPE_OWNER VARCHAR2(30)

VIEW_TYPE VARCHAR2(30)

SUPERVIEW_NAME VARCHAR2(30)

SQL> spool off

列表A

列表A中演示了使用CREATE TABLE時的錯誤和成功使用COPY命令的方法。

更多信息請查看IT技術專欄

更多信息請查看數據庫
易賢網手機網站地址:利用SQL *Plus復制遺留的Oracle數據表

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網