2012-07-20 24 views
1

我有一个已填充的表。SQL复制列AND更改数据类型

我需要从LONG改变一个列的数据类型为CLOB

但是这个数据库是由第三方托管和表空间是有限的。

我知道命令:

ALTER TABLE myTable MODIFY my_data CLOB 

不过,我再经过漫长的等待收到错误:

ORA-01652: unable to extend temp segment by 128 in tablespace 

增加表空间是不是一种选择。

有什么解决办法吗?

我可以使用数据类型CLOB创建一个新列,然后从my_data(LONG)复制并转换数据而不用占用表空间吗?我可以关闭撤消帮助吗?

非常感谢

回答

0

我会说,最好的选择是创建一个新的数据类型的新列的基础上,旧的列更新它,然后删除旧的列,但因为你是有空间的问题,可能不是一个选择。

或者你可以尝试在一系列的沐浴中做到这一点。例如,将10000行数据移动到新列,然后在这10000个位置上将旧值设置为空以释放一些空间。

+0

这就是我想要做的,但是第一列的数据类型是长,第二列是CLOB如何在两者之间转换时复制? – 2012-07-20 11:13:25

+0

取决于你的数据库引擎,如果sql server可以做更新表set column2 = cast(column1 as data_type)where ... – Diego 2012-07-20 11:46:28