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

前言:近期迁移工作中,有些表的列数据类型太小,如下即为一例

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,在生产中要评估此类操作的可行性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值