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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何將varchar2修改為clob型別欄位(使用long過渡)型別
- Oracle Long型別轉換為Clob型別Oracle型別
- java jdbc存取oracle clob型別JavaJDBCOracle型別
- Oracle的資料型別:char/varchar2Oracle資料型別
- Oracle中Clob型別處理解析Oracle型別
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar型別的區別與使用Oracle型別
- Oracle 中LONG RAW BLOB CLOB型別介紹Oracle型別
- 保留資料庫表中的資料,把表中的欄位varchar2改成clob型別資料庫型別
- PLSQL中慎用CLOB型別SQL型別
- 【基礎】Oracle CHAR,VARCHAR,VARCHAR2,nvarchar型別的區別與使用Oracle型別
- long查詢結果轉換為varchar2型別型別
- Oracle 資料型別CHAR, NCHAR, VARCHAR2, NVARCHAR2Oracle資料型別
- VARCHAR2轉換為CLOB碰到ORA-22858錯誤
- Oracle Blob 轉換為ClobOracle
- Oracle long轉為varchar2Oracle
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-CHAR和VARCHAR2變數SQL資料型別變數
- long型別轉換成varchar2型別
- 【SQL】Oracle建立CLOB型別上傳下載讀取檔案SQLOracle型別
- VARCHAR2(N CHAR)與VARCHAR2(N)的區別[Oracle基礎]Oracle
- SQL Server中text型別匯入oracle clob欄位時的設定SQLServer型別Oracle
- java語言操作Oracle資料庫中的CLOB資料型別 (轉)JavaOracle資料庫資料型別
- oracle blob_clob列的表如何指定sement_name及index nameOracleIndex
- oracle中char與varchar2的區別Oracle
- LONG欄位型別向CLOB遷移型別
- java呼叫oracle儲存過程的自定義型別(可變陣列)JavaOracle儲存過程型別陣列
- 【區別】Oracle官方文件中有關NVARCHAR2、VARCHAR2和VARCHAR資料型別的描述Oracle資料型別
- JDBC 處理CLob和Blob型別資料JDBC型別
- 如何判斷變數型別變數型別
- EF:oracle的number型別對映為C#的boolean型別Oracle型別C#Boolean
- LightDB 22.4 新特性之完全相容Oracle varchar2資料型別Oracle資料型別
- 【原創】Oracle number date varchar2欄位型別佔用空間大小Oracle型別
- ORA-22858: 資料型別的變更無效資料型別
- dedecms聯動型別裡,知道列舉值,如何轉換為列舉名型別
- Oracle中NVARCHAR2與VARCHAR2的區別Oracle
- javascript中如何判斷變數的型別?JavaScript變數型別
- 你或許不知道的varchar2型別的定義型別
- 利用solaris的mknod變更format(陣列裝置識別符號)ORM陣列符號
- Oracle varchar2型別欄位插入插入過長資料丟失問題Oracle型別