侧边栏壁纸
博主头像
lai博主等级

  • 累计撰写 53 篇文章
  • 累计创建 19 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Oracle修改字段类型

lai
lai
2023-01-04 / 0 评论 / 0 点赞 / 1,194 阅读 / 293 字
温馨提示:
本文最后更新于 2023-01-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

工作时候由于某种原因需要将原来VARCHAR2类型字段修改为NUMBER类型,这里推荐一种数据量大的情况下比较快速的一种处理方法

执行步骤

假设目标表为table_name,要修改的字段为cloumn

数据检测

先对cloumn数据进行转换测试,是否都能转换为NUMBER类型,处理不能转换的数据

SELECT TO_NUMBER(cloumn) FROM table_name

数据备份

创建数据备份表table_name_bak

CREATE TABLE table_name_bak AS SELECT * FROM table_name;

清空原表

TRUNCATE TABLE table_name;

修改字段类型

ALTER TABLE table_name MODIFY cloumn NUMBER(38);

禁用索引

如果表存在索引,则先禁用索引,这里假设索引为table_name_index

ALTER INDEX table_name_index UNUSABLE;

将备份表数据恢复到目标表

这里需要查询出所有字段,并使用TO_NUMBER()函数转换数据类型,并保存到新表

INSERT INTO table_name   ( ID, cloumn, ...  )   SELECT  ID, TO_NUMBER(cloumn), ...  FROM table_name_bak;

恢复索引

ALTER INDEX table_name_index REBUILD;

查看索引状态

SELECT status FROM user_indexes WHERE index_name='table_name_index';

删除备份表

DROP TABLE table_name_bak;
0

评论区