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

2016-02-19 14:40 0 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐利用SQL *Plus复制遗留的Oracle数据表,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

你可能运行的是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 100000 SQL 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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

列表A

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

列表A中演示了使用CREATE TABLE时的错误和成功使用COPY命令的方法。

来源:https://www.tulaoshi.com/n/20160219/1607527.html

延伸阅读
下面介绍如何操作数据表中的数据。 向数据表中插入数据 1. 向导师信息表中插入数据 (1)在图7.19所示的快捷菜单中选择选项,出现如图7.21所示的界面。可以按照二维表格输入数据。 (2)单击 按钮可以查看输入的数据对应的SQL代码。 (3)数据输入完毕后,单击 按钮可以完成数据的插入。 (4)上述过程对...
Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法。 下面向大家介绍使用SQL查两个Oracle数据表查询的相同数据的方法,笔者感到这两种方法执行效率高、使用方便。 第一种方法:利用操作符intersect in...
这篇文章里介绍了master数据库中两个非常有用但在SQL Server在线教科书中没有提到的存储过程。 这些系统过程对于处理以下任务非常方便,如判断使用的存储空间大小、行数、用户表索引等等。 第一个过程sp_MSForEachDB对于感兴趣的服务器上的每个数据库执行三条命令。 ◆@command1:第一个执行的命令 ◆@replacechar:用另一个占...
标签: MySQL mysql数据库
  在进行数据表检查或修补时,可以先将数据表锁定,可确保数据表的安全: mysqlLOCK TABLE tbl_name READ; mysqlFLUSH TABLES; 将数据表锁定后再进行检查或修补的工作。完成后再解除锁定: mysqlUNLOCK TABLES; //LOCK TABLE tbl_name READ表示要锁定成只读状态,在这个状态下用户只能读取数据表,不能写入。 LOCK TABLE tbl_name W...
SQL Server 2005 SP2为我们带来了vardecimal功能,当时针对decimail和numeric数据类型推出了新的存储格式--vardecimal。vardecimal存储格式允许 decimal和numeric数据类型的存储作为一个可变长度列。 这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储,据称这项功能可以为典型的数据仓库节省30%的空间,而SQL Server 2008在这...

经验教程

240

收藏

48
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部