当前位置: 首页 > 图文教程 > 数据库 > Oracle > 利用SQL *Plus复制遗留的Oracle数据表

Oracle
oracle sys_connect_by_path 函数 结果集连接
oracle join on 数据过滤问题
Oracle 当前用户下所有表的记录总数
oracle 树查询 语句
oracle 触发器 实现出入库
Oracle 函数大全
oracle 删除重复数据
ORACLE 最大连接数的问题
oracle 层次化查询(行政区划三级级联)
oracle 查询表名以及表的列名
Oracle 数据显示 横表转纵表
oracle 服务启动,关闭脚本(windows系统下)
ORCLE 表中列的修改
oracle 数据库连接分析
Oracle 实现类似SQL Server中自增字段的一个办法
Oracle 常用的SQL语句
Oracle 数组的学习 小知识也要积累,养成好的学习态度
Oracle 日期的一些简单使用
Oracle 数据库连接查询SQL语句
Oracle DBA常用语句

利用SQL *Plus复制遗留的Oracle数据表


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 61 ::
收藏到网摘: n/a

你可能运行的是Oracle 10g Release 2数据库服务器,但是需要支持某些应用程序可能是很早之前写好的。在Oracle 8i之前的版本创建的数据表常用LONG数据类型来存储大型文本。

随着Large Object(LOB)数据类型的引入,LONG和LONG RAW数据类型就被抛弃了。如果你要复制使用了LONG数据类型的数据表,那么使用CREATE TABLE AS SELECT语法将不能完成任务,这时将会返回错误:ORA-00997: illegal use of LONG 数据类型。

你可以导出该表然后再导入它,但是这样要做大量的工作。SQL*PLUS中的COPY命令仍旧可以使用一条命令来完成对此类数据表的复制。下面是使用COPY命令的格式(注意使用短线“-”来换行):

COPY FROM user/pw@dblink TO user/pw@dblink 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 100000SQL> COPY FROM hr/hr@orcl 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 hr@orcl. 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命令的方法。