修改 Oracle 表中字段类型,在该字段存在值的情况下,会提示:ORA-01439:要更改数据类型,则要修改的列必须为空

这时就需要区分情况处理。

  1. 数据量比较小的时候,可以直接操作目标表。
    重命名字段名,添加新字段,复制原始字段数据,删除重命名字段。
/* 表字段重命名 */
ALTER TABLE table_name RENAME COLUMN column_name TO column_name_tmp;/* 新增原始字段同名字段 */
ALTER TABLE table_name ADD column_name NUMBER(10,2);/* 将重命名字段数据更新到新增字段 */
UPDATE table_name SET column_name = trim(column_name_tmp);/* 删除重命名字段 */
ALTER TABLE table_name DROP COLUMN column_name_tmp;
  1. 如果数据量较大,比如这次遇到的情况5500万条数据,采用方法1更新字段数据要超过1小时。
    快捷操作就需要备份源表数据,修改字段名,从备份表插入数据。
/* 备份数据,备份 table_name 表数据至 table_name_bak 表 */
CREATE TABLE table_name_bak AS SELECT * FROM table_name;/* 清空目标表数据 */
TRUNCATE TABLE table_name;/* 修改目标表字段类型 */
ALTER TABLE table_name MODIFY(column_name NUMBER(10,2));--禁用索引
ALTER INDEX INDEX_NAME UNUSABLE;/* 将备份表数据插入目标表 */
INSERT INTO table_name(column_name1,column_name2,column_name3,...)SELECT column_name1,column_name2,column_name3,...FROM table_name_bak;/* 删除备份表 */
DROP TABLE table_name_bak;--恢复索引
ALTER INDEX INDEX_NAME REBUILD;--查看索引状态
SELECT status FROM user_indexes WHERE index_name='INDEX_NAME';

Oracle 修改字段类型相关推荐

  1. oracle改类型吗,详解Oracle修改字段类型方法总结

    最近学习了Oracle修改字段类型方法,留做记录. 有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter tab ...

  2. oracle 修改字段类型流程

    oracle 修改字段类型流程 注意::RECEIVECONTENT_1 为新增的字段 RECEIVECONTENT 为旧字段 1. 第一步:添加一个clob类型的字段 alter table sen ...

  3. oracle修改字段类型及长度

    oracle修改字段类型及长度 –改变类型及长度 Alter Table tableName Add (new_name number(10));–新增加一个字段用作储存要改变类型及长度的值 upda ...

  4. oracle修改字段详解,详解Oracle修改字段类型方法总结

    最近学习了Oracle修改字段类型方法,留做记录. 有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行: sql;" ...

  5. Oracle修改字段类型方法

    为什么80%的码农都做不了架构师?>>>    有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行: al ...

  6. Oracle修改字段类型方法总结

    有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarcha ...

  7. oracle修改clob值,oracle修改字段类型由varchar2修改为clob类型

    模拟情景,表:batchintfloadlog,要修改字段:resultinfo,字段 从原来的 varchar2 修改为 clob 1.假设要修改字段数值为空,则可以直接修改:​ 可是发现如下错误: ...

  8. Oracle修改字段类型相关操作

    此方法仅针对有数据的字段类型更改! -- 一.变更原'字段名'为'字段名1' alter table 库名.表名 rename column 字段名 to 字段名1;-- 二.增加一个与原字段同名的字 ...

  9. oracle 修改字段类型方法

    因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型 要是没有数据的话直接用以下语句即可 alter   table tb_test modify permile ...

最新文章

  1. JSP Cookie处理
  2. win10无法显示的AppData文件夹,以及隐藏的python安装
  3. window.open使用中遇到的问题
  4. java stream findlast_恕我直言你可能真的不会java第9篇-Stream元素的匹配与查找
  5. zeppelin 配置 spark
  6. 超硬核!只要1美元!教你给MacBook装上触摸屏
  7. 创建一个基于Spring IO Platform的多模块Gradle项目
  8. 【Mac 系统下载 解压 ImageNet-1k(ILSVRC2012、IN1K)数据集】
  9. 编写函数,基于期中成绩和期末成绩,按指定权重(默认0.3和0.7)计算总分。
  10. 电脑没网络在计算机哪,电脑没有wifi连接功能在哪里设置
  11. 计算机术语死机,计算机“死机”故障原因及处理办法大全
  12. 三维数组matlab怎么画图,三维数组画图遇到问题
  13. 键盘弹不出来情况(一)
  14. R语言ggpubr包的ggscatter函数可视化散点图(scatter plot)、设置add参数为loess为散点图添加局部加权回归曲线、配置conf.int参数为回归线添加置信区
  15. ESP8266+blinker点灯(小爱+天猫+小度三合一)
  16. mysql安装出现应用程序无法正常启动(oxc000007b)的解决方案
  17. php根据URL获得网页内容
  18. 计算机网络基本知识(一):分类
  19. 阴阳师服务器维护,《阴阳师》手游10月24日维护更新公告
  20. 使用flask-avatars处理用户头像

热门文章

  1. Google Talk中英文翻译机器人试用【转】
  2. 【论文阅读】WaterGAN
  3. php小程序 跳一跳,微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
  4. 【IoT】产品 WIFI 选型:瑞昱 RTL8710 与乐鑫 ESP8266 对比
  5. 瑞昱RTL8710、乐鑫ESP8266 物联网之争
  6. java小居来一趟不白学
  7. 将md文件转化为html样式,在页面中进行渲染
  8. 如何在mysql查询结果集中得到记录行号_MySQL中在查询结果集中得到记录行号的方法...
  9. 领英个人简介如何支持html,领英使用方式
  10. echarts立体柱状图,正负极不同颜色的设置