设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
一个表有9亿的数据,要改一个字段的类型? ...
返回列表
发新帖
一个表有9亿的数据,要改一个字段的类型?
[复制链接]
11
|
9
|
2005-12-27 14:11:11
|
显示全部楼层
|
阅读模式
表A有a,b,c,d4个字段,分别是int,int,varchar2,varchar2,其中a,b两个为pk。现在要把c从varchar2改为number,表中都是测试数据,9亿多条,其中c中的值都是‘test_value’现在现在需要c字段变为number然后填值(随便填)。
哪位有什么好方法么?
一天以内要搞定...
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
新建一个改过字段的表,把旧表的数据插进去(用/*+append*/),把旧表drop掉,新表改成旧表的名字,很快的,9亿条一般也就最多2个小时
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
哦? 我试试,希望下班前能弄完
阿门。。。。
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
先把c字段的数据都update成‘1’,然后更改为number或者integer类型,为什么不行那? 我反过来就可以改~~
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
楼主,想问一下哦。你那个9亿条的表,是怎么知道这个表记录是9亿条的呀?直接select count(*) ????????????????????很快吗?
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
直接改会产生很多undo的。
采用waityou81 mm的方法,nologging append + parallel 是个很好的方法。
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
最初由 wayne_lau 发布
[B]先把c字段的数据都update成‘1’,然后更改为number或者integer类型,为什么不行那? 我反过来就可以改~~ [/B]
先把c字段的数据都update成 null ,
然后更改为number或者integer类型
update成 1
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
郑重声明,俺是男滴,这地方mm是很希缺滴
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
最初由 wang_and_yang 发布
[B]楼主,想问一下哦。你那个9亿条的表,是怎么知道这个表记录是9亿条的呀?直接select count(*) ????????????????????很快吗? [/B]
以前别人统计的,报告中看到的,一个表大约占用了28g的空间
回复
使用道具
举报
千问
|
2005-12-27 14:11:11
|
显示全部楼层
最初由 玉面飞龙 发布
[B]直接改会产生很多undo的。
采用waityou81 mm的方法,nologging append + parallel 是个很好的方法。 [/B]
insert/*+append*/ into A_NEW
select a,b,1,d from A;
是这样么?
加了append是不是不写回滚段?而且需要alter table nologging 才能产生较少的redo么?
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行