2012-07-20 53 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