ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle如何变更varchar2类型的列为clob

oracle如何变更varchar2类型的列为clob

原创 Linux操作系统 作者:wisdomone1 时间:2012-11-07 10:01:32 0 删除 编辑
前言:近期迁移工作中,有些表的列数据类型太小,如下即为一例
SQL> create table t_varchar2_to_clob(a varchar2(100));
表已创建。
SQL> insert into t_varchar2_to_clob values('zxy');
已创建 1 行。
SQL> commit;
提交完成。
--经测:varchar2的空或实列皆不能变更为clob类型
SQL> alter table t_varchar2_to_clob modify a clob;
alter table t_varchar2_to_clob modify a clob
                                      *
第 1 行出现错误:
ORA-22858: 数据类型的变更无效

--如下采用过渡方法
SQL> create table t_varchar2_to_clob(a varchar2(10));
表已创建。
SQL> insert into t_varchar2_to_clob values('zxy');
已创建 1 行。
SQL> insert into t_varchar2_to_clob values('zxy1');
已创建 1 行。
SQL> insert into t_varchar2_to_clob values('zxy12');
已创建 1 行。
SQL> insert into t_varchar2_to_clob values('zxy123');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from t_varchar2_to_clob;
A
----------
zxy
zxy1
zxy12
zxy123
--添加一个新列
SQL> alter table t_varchar2_to_clob add b clob;
表已更改。
SQL> col a for a10
SQL> col b for a10
SQL> r
  1* select * from t_varchar2_to_clob
A          B
---------- ----------
zxy
zxy1
zxy12
zxy123
--把源列的数据迁移到新列
SQL> update t_varchar2_to_clob set b=a;
已更新4行。
SQL> commit;
提交完成。
--查看源与新列是否数据一致
SQL> select a,b from t_varchar2_to_clob;
A          B
---------- ----------
zxy        zxy
zxy1       zxy1
zxy12      zxy12
zxy123     zxy123
--删除源列
SQL> alter table t_varchar2_to_clob drop column a;
表已更改。
--把新列改名为源列
SQL> alter table t_varchar2_to_clob rename column b to a;
表已更改。
--查看变更后的表
SQL> desc t_varchar2_to_clob;
 名称                                                  是否为空? 类型
 ----------------------------------------------------- -------- --------------
--------------------
 A                                                              CLOB
小结:1,上述操作适用于开发环境
           2,在生产中要评估此类操作的可行性

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-748517/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12690141