【发布时间】:2013-09-24 09:51:48
【问题描述】:
我在 Oracle 11g 中有一个表(包含数据),我需要使用 Oracle SQLPlus 来执行以下操作:
目标:将表UDA1中的列TEST1的类型从number更改为varchar2。
建议方法:
- 备份表
- 将列设置为空
- 更改数据类型
- 恢复值
以下操作无效。
create table temp_uda1 AS (select * from UDA1);
update UDA1 set TEST1 = null;
commit;
alter table UDA1 modify TEST1 varchar2(3);
insert into UDA1(TEST1)
select cast(TEST1 as varchar2(3)) from temp_uda1;
commit;
与索引有关(保持顺序),对吧?
【问题讨论】:
-
您最后的
insert语句必须是update。 -
另外,有人告诉我“表有一个密钥”我需要用密钥导出......然后用匹配的密钥恢复。是这样吗?
-
“有人告诉我桌子有钥匙”是什么意思……你认识桌子吗?
-
是的,它是一个大表,所以我应该只在第一步中备份列 TEST1。如果是这样,最后一步怎么办?
-
参考@a_horse_with_no_name 的答案,这是正确的程序。记得创建索引。由于 number 和 varchar2 不同,所以不会有相同的顺序