oracle如何變更varchar2型別的列為clob
前言:近期遷移工作中,有些表的列資料型別太小,如下即為一例
SQL> create table t_varchar2_to_clob(a varchar2(100));
SQL> create table t_varchar2_to_clob(a varchar2(100));
表已建立。
SQL> insert into t_varchar2_to_clob values('zxy');
已建立 1 行。
SQL> commit;
提交完成。
--經測:varchar2的空或實列皆不能變更為clob型別
SQL> alter table t_varchar2_to_clob modify a clob;
alter table t_varchar2_to_clob modify a clob
*
第 1 行出現錯誤:
ORA-22858: 資料型別的變更無效
SQL> alter table t_varchar2_to_clob modify a clob;
alter table t_varchar2_to_clob modify a clob
*
第 1 行出現錯誤:
ORA-22858: 資料型別的變更無效
--如下采用過渡方法
SQL> create table t_varchar2_to_clob(a varchar2(10));
表已建立。
SQL> insert into t_varchar2_to_clob values('zxy');
已建立 1 行。
SQL> insert into t_varchar2_to_clob values('zxy1');
已建立 1 行。
SQL> insert into t_varchar2_to_clob values('zxy12');
已建立 1 行。
SQL> insert into t_varchar2_to_clob values('zxy123');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t_varchar2_to_clob;
A
----------
zxy
zxy1
zxy12
zxy123
--新增一個新列
SQL> alter table t_varchar2_to_clob add b clob;
----------
zxy
zxy1
zxy12
zxy123
--新增一個新列
SQL> alter table t_varchar2_to_clob add b clob;
表已更改。
SQL> col a for a10
SQL> col b for a10
SQL> r
1* select * from t_varchar2_to_clob
SQL> col b for a10
SQL> r
1* select * from t_varchar2_to_clob
A B
---------- ----------
zxy
zxy1
zxy12
zxy123
---------- ----------
zxy
zxy1
zxy12
zxy123
--把源列的資料遷移到新列
SQL> update t_varchar2_to_clob set b=a;
SQL> update t_varchar2_to_clob set b=a;
已更新4行。
SQL> commit;
提交完成。
--檢視源與新列是否資料一致
SQL> select a,b from t_varchar2_to_clob;
SQL> select a,b from t_varchar2_to_clob;
A B
---------- ----------
zxy zxy
zxy1 zxy1
zxy12 zxy12
zxy123 zxy123
---------- ----------
zxy zxy
zxy1 zxy1
zxy12 zxy12
zxy123 zxy123
--刪除源列
SQL> alter table t_varchar2_to_clob drop column a;
SQL> alter table t_varchar2_to_clob drop column a;
表已更改。
--把新列改名為源列
SQL> alter table t_varchar2_to_clob rename column b to a;
SQL> alter table t_varchar2_to_clob rename column b to a;
表已更改。
--檢視變更後的表
SQL> desc t_varchar2_to_clob;
名稱 是否為空? 型別
----------------------------------------------------- -------- --------------
--------------------
A CLOB
SQL> desc t_varchar2_to_clob;
名稱 是否為空? 型別
----------------------------------------------------- -------- --------------
--------------------
A CLOB
小結:1,上述操作適用於開發環境
2,在生產中要評估此類操作的可行性
2,在生產中要評估此類操作的可行性
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-748517/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle long轉為varchar2Oracle
- LightDB 22.4 新特性之完全相容Oracle varchar2資料型別Oracle資料型別
- 【SQL】Oracle建立CLOB型別上傳下載讀取檔案SQLOracle型別
- [20231013]CLOB型別的編碼問題.txt型別
- Oracle 中varchar2 和nvarchar2區別Oracle
- JDBC 處理CLob和Blob型別資料JDBC型別
- 關於Oracle的BLOB和CLOBOracle
- 如何檢視ORACLE的LOB(BLOB和CLOB)物件佔用的大小Oracle物件
- cursor_sharing=force強制繫結變數不會把變數值預設當成varchar2型別的理解變數型別
- 如何判斷變數型別變數型別
- javascript中如何判斷變數的型別?JavaScript變數型別
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- systemtap 探祕(三)- 型別、變數和陣列型別變數陣列
- SqlSugar code first 欄位為列舉型別,預設生成資料庫欄位為bigint如何設定為int型別SqlSugar型別資料庫
- ORACLE日期型別Oracle型別
- 聯機重定義修改欄位型別(NVARCHAR2->VARCHAR2)型別
- Oracle的number資料型別Oracle資料型別
- 列舉型別型別
- Python語法--可變型別和不可變型別Python型別
- Oracle DBLink中CLOB報錯ORA-22992Oracle
- Oracle資料型別對應Java型別Oracle資料型別Java
- ORACLE物件型別表Oracle物件型別
- Oracle 資料型別Oracle資料型別
- Oracle BLOB型別的資料如何檢視和下載?Oracle型別
- java中的列舉型別Java型別
- Rust的列舉型別EnumRust型別
- 型別的本質:對變數、型別、指標的理解型別變數指標
- day5 性別變更
- Rust中將陣列轉為集合型別的簡單方法Rust陣列型別
- ENUM列舉型別型別
- TypeScript 陣列型別TypeScript陣列型別
- JPA不識別MySQL的列舉型別MySql型別
- oracle一列拆分為多列Oracle
- 聊聊如何變更pod的流量路由路由
- PHP變數型別PHP變數型別
- Java 變數型別Java變數型別
- 變數型別-Set變數型別
- 【轉】ORACLE資料型別Oracle資料型別
- Oracle anydata資料型別Oracle資料型別