请教给一个数据库表增加一个字段并且赋值的高效办法

时间:2022-12-11 18:54:54
现在的情况是:一个数据库表中有25个字段,此表目前的数据量为900万条记录左右.
现在增加一个或两字段并赋值,不知道大家有没有什么高效的办法..谢谢.

14 个解决方案

#1


create table temp as select t.*,'new_column_value' from T t;
drop table T;
rename temp T;

#2


-- 正所谓编程就是找有规律可循的地方,如果没有规律那用三营长的话说就是:“那老子也冒得办法啦!” 
-- 你的数据源值从哪里来?
引用楼主 obnijeh 的帖子:
现在的情况是:一个数据库表中有25个字段,此表目前的数据量为900万条记录左右. 
现在增加一个或两字段并赋值,不知道大家有没有什么高效的办法..谢谢.

#3


数据值是已知且固定的.如增加AA字段.值为xx

#4


引用 1 楼 shiyiwan 的回复:
SQL codecreate table temp as select t.*,'new_column_value' from T t;
drop table T;
rename temp T;

这个就行

#5


alter table AA add ttt VARCHAR2(8) default 'aaa';

一次更新900万条数据而已
再说只更新一次,没什么高效的必要,等一个小时够了吧

#6


现在本地就是这样做的,但数据量没有这么多. 如果像你说的一个小时,如果中途断网,我都不知道怎么处理..要是10来分钟就可以完成倒是没问题.
alter table TMP add (scodea varchar2(10) default 'dxx')

#7


引用 6 楼 obnijeh 的回复:
现在本地就是这样做的,但数据量没有这么多. 如果像你说的一个小时,如果中途断网,我都不知道怎么处理..要是10来分钟就可以完成倒是没问题. 
alter table TMP add (scodea varchar2(10) default 'dxx') 

一个小时只是随便说说
我更新15万条只要15秒,900万条的话10几分钟差不多了吧

#8


呵呵,谢谢.要是这样的速度还差不多...

#9


先把索引什么的都删了,然后再改变结构,再赋值,最后再重建索引

#10


引用 9 楼 zxf_feng 的回复:
先把索引什么的都删了,然后再改变结构,再赋值,最后再重建索引

如果原来数据量小的话,重建索引可以提高速度。但是在原先大数据量存在的情况下,重建索引也要好久,这样不值得了

#11


用Oracle 数据导入工具SQL*Loader速度应该比较快吧。不知道你要导入的数据是存在什么格式下的

#12


引用 9 楼 zxf_feng 的回复:
先把索引什么的都删了,然后再改变结构,再赋值,最后再重建索引


同意这个,

#13


引用 7 楼 Robin_Ares 的回复:
引用 6 楼 obnijeh 的回复:
现在本地就是这样做的,但数据量没有这么多. 如果像你说的一个小时,如果中途断网,我都不知道怎么处理..要是10来分钟就可以完成倒是没问题.
alter table TMP add (scodea varchar2(10) default 'dxx')

一个小时只是随便说说
我更新15万条只要15秒,900万条的话10几分钟差不多了吧


这个可以

#14


看贴必回~!

#1


create table temp as select t.*,'new_column_value' from T t;
drop table T;
rename temp T;

#2


-- 正所谓编程就是找有规律可循的地方,如果没有规律那用三营长的话说就是:“那老子也冒得办法啦!” 
-- 你的数据源值从哪里来?
引用楼主 obnijeh 的帖子:
现在的情况是:一个数据库表中有25个字段,此表目前的数据量为900万条记录左右. 
现在增加一个或两字段并赋值,不知道大家有没有什么高效的办法..谢谢.

#3


数据值是已知且固定的.如增加AA字段.值为xx

#4


引用 1 楼 shiyiwan 的回复:
SQL codecreate table temp as select t.*,'new_column_value' from T t;
drop table T;
rename temp T;

这个就行

#5


alter table AA add ttt VARCHAR2(8) default 'aaa';

一次更新900万条数据而已
再说只更新一次,没什么高效的必要,等一个小时够了吧

#6


现在本地就是这样做的,但数据量没有这么多. 如果像你说的一个小时,如果中途断网,我都不知道怎么处理..要是10来分钟就可以完成倒是没问题.
alter table TMP add (scodea varchar2(10) default 'dxx')

#7


引用 6 楼 obnijeh 的回复:
现在本地就是这样做的,但数据量没有这么多. 如果像你说的一个小时,如果中途断网,我都不知道怎么处理..要是10来分钟就可以完成倒是没问题. 
alter table TMP add (scodea varchar2(10) default 'dxx') 

一个小时只是随便说说
我更新15万条只要15秒,900万条的话10几分钟差不多了吧

#8


呵呵,谢谢.要是这样的速度还差不多...

#9


先把索引什么的都删了,然后再改变结构,再赋值,最后再重建索引

#10


引用 9 楼 zxf_feng 的回复:
先把索引什么的都删了,然后再改变结构,再赋值,最后再重建索引

如果原来数据量小的话,重建索引可以提高速度。但是在原先大数据量存在的情况下,重建索引也要好久,这样不值得了

#11


用Oracle 数据导入工具SQL*Loader速度应该比较快吧。不知道你要导入的数据是存在什么格式下的

#12


引用 9 楼 zxf_feng 的回复:
先把索引什么的都删了,然后再改变结构,再赋值,最后再重建索引


同意这个,

#13


引用 7 楼 Robin_Ares 的回复:
引用 6 楼 obnijeh 的回复:
现在本地就是这样做的,但数据量没有这么多. 如果像你说的一个小时,如果中途断网,我都不知道怎么处理..要是10来分钟就可以完成倒是没问题.
alter table TMP add (scodea varchar2(10) default 'dxx')

一个小时只是随便说说
我更新15万条只要15秒,900万条的话10几分钟差不多了吧


这个可以

#14


看贴必回~!