需求:修改字段類型時,字段長度由大改小,字段類型由大改小,數據庫不讓修改,提示必須先清除數據,但數據有系統非常重要時可以采用如下方案。
擴展使用:1.可用于備份重要表的數據(只需要執行1,2步驟即可)
????????? 2.可用于對物理隔離的兩個生產數據庫進行同步(在A數據庫執行1,2步驟,在B數據庫執行3,6,7步驟即可)
?????????
1.抽出表中數據
select 'insert into YJ_QYMB (ID,SSFDJT) values ('''||ID||''','''||SSFDJT||''');' from YJ_QYMB;
2.保存整理數據(數據被保存在c:\temp\6-data.sql中)
? 驗證數據是否導全,沒有某個表的導出數據時需要驗證該表在庫中是否真的沒有數據,
? 將數據文件記為6-data.sql,以備第6步使用。
? 注意:對于大對象的類型可能用該方法不能導出,需要用imp語句導出整張表,如果在同一臺操作可以用復制表的方法(create table table1 select ...)
3.保存及刪除外鍵關系
alter table YJ_QSHYDFL drop constraint FK_QSHYDFLZBID;
alter table YJ_QSHYDLKB drop constraint FK_SSID;
4.刪除數據
delete from YJ_QYMB;
commit;
5.修改表結構
alter table YJ_QYMB modify ID varchar2(100);
表中列的增刪該操作
--增加列
alter table YJ_JSSYDFLQKB add column cdate date;
--刪除列
alter table YJ_JSSYDFLQKB drop column cdate;
--修改列的類型及長度
alter table YJ_QYMB modify id NVARCHAR2(36);
--修改列名
alter table rightcert rename column certno to rightcertno;
--修改列名時遇到特殊的列名(如DATE),需要轉化為字符串(如"DATE"),在字符串需要區分大小寫
alter table YJ_JSSFSQSHYDQKB rename column "DATE" to "CDATE";
6.導入數據 (用2種的導出文件導入)
insert into YJ_QYMB (ID,SSFDJT) values ('BD1C309866B74125863628A7F64D317E','大唐集團');
insert into YJ_QYMB (ID,SSFDJT) values ('C97610A843144629AD228004D7EF4DA4','大唐國際');
insert into YJ_QYMB (ID,SSFDJT) values ('760B69F7468D4A2CABA96BA63BA1640D','國電集團');
insert into YJ_QYMB (ID,SSFDJT) values ('F3332D1068B74591AC20F351F3A6C9BF','華電集團');
insert into YJ_QYMB (ID,SSFDJT) values ('0B0423789DC542C280DFF7C964E6D957','華潤集團');
insert into YJ_QYMB (ID,SSFDJT) values ('48C6F34FAFD4437DB3C57F6848095253','華能集團');
insert into YJ_QYMB (ID,SSFDJT) values ('64AB69D0BC174CD9A6AFAF05CE66BCF8','中電投集團');
insert into YJ_QYMB (ID,SSFDJT) values ('EB38DBF347BE45A5B6AFF63BDF2758C6','國信集團');
insert into YJ_QYMB (ID,SSFDJT) values ('4A3F4CC759F147EF968FA2E118471478','國華集團');
insert into YJ_QYMB (ID,SSFDJT) values ('2038E47E9BC74639A82758492F1E8992','協鑫集團');
insert into YJ_QYMB (ID,SSFDJT) values ('6709E2B2C8B94FFABA09BDBDBE2D50B9','北京三吉利股份有限公司');
insert into YJ_QYMB (ID,SSFDJT) values ('32C614C06CE249C6852A75E66E5A4DEF','其他');
commit;
7.修復外鍵關系
alter table YJ_QSHYDFL add constraint FK_QSHYDFLZBID foreign key (ZBID) references YJ_QSHYDFLZBB (ID);
alter table YJ_QSHYDLKB add constraint FK_SSID foreign key (SSID) references YJ_SMCB (ID);
問題:
1.nvarchar2與varchar2的區別:
??? VARCHAR2存放的英文字符只占一個字節,而nvarchar2依據所選的字符集,大多為兩個字節。
具體到NVARCHAR2和VARCHAR2的區別,從使用角度來看區別在于:NVARCHAR2在計算長度時和字符集相關的,
例如數據庫是中文字符集時以長度10為例,則
?1、NVARCHAR2(10)是可以存進去10個漢字的,如果用來存英文也只能存10個字符。
?2、而VARCHAR2(10)的話,則只能存進5個漢字,英文則可以存10個。Oracle可以保證VARCHAR2在任何版本中該數據類型都可以向上和向下兼容。
?
2.大對象clob的保存:
3.生成數據文件中無效信息的問題。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
