悲催的MSSQL 2 Oracle之旅 一

2021-05-25 13:10:13 字數 2392 閱讀 2131

好久沒有來這裡了,還就沒有發表文章了,這個月初,老闆突然決定要把整個專案轉為ora平台,可是苦於公司人手不夠,只能我自己來了,ora以前只是接觸過皮毛,心裡還真是沒有底,現在把開發過程中碰到的問題記錄下來:

第一天:表結構的匯入,這算是骨架吧,剛開始嘗試過使用mssql的匯入匯出,這樣確實能導過來,但是隨之而來也出現了不少問題,這樣匯入的時候不只是表結構,包括資料也過來了,這本身是好事,可是由於資料庫中個別表資料量特別大,導致記憶體不能使用,匯入失敗。

只能想別的辦法,這時想到了使用pb將表結構導過來,結果很好,也很滿意,但是之後發現,有些表的名字帶了「」,這在ora中使用""是嚴格區分大小寫,查詢的時候也必須""這樣了,會給程式後期的修改帶來麻煩,但是實在想不出別的辦法來了(知道的請指教),網上倒是有轉換工具,不過都收費,還有就是自己寫程式倒,可惜本人比較懶.........

後來在網上找到了一段**,批量修改資料庫中表名的:

declare

v_sql varchar2(1000);

cursor cur is select 'alter table "'||t1.table_name||'" rename to '||upper(t1.table_name) as sqlstr

from user_tables t1

where table_name<>upper(table_name)

and not exists (select 1 from user_tables t2 where t2.table_name=upper(t1.table_name) );

begin

for rur in cur loop

v_sql := rur.sqlstr;

execute immediate v_sql;

end loop;

end;

/其實就是替換下

這樣表結構算是完成了,但是後來發現還有問題,因為有的表中自增列沒有生成指令碼,而且預設值依然是getdate(),ora中是sysdate

這樣如果有自增列的話該如何解決?

由於我的表中大部分為自增列為id,所以寫了乙個儲存過程,如下:

create or replace procedure p_batch authid current_user

asv_tablename varchar2(30);

cursor c is select substr(tc.table_name,0,25) from user_tab_columns tc,user_tables t where tc.column_name='id' and t.table_name = tc.table_name;

begin

open c;

loop

fetch c

into v_tablename;

exit when c%notfound;

--建立序列

dbms_output.put_line(v_tablename);

begin

execute immediate 'drop sequence seq_' || v_tablename;

exception

when others then

null;

end;

execute immediate 'create sequence seq_' || v_tablename ||

' start with 1 increment by 1';

--建立觸發器

execute immediate 'create or replace trigger tr_' || v_tablename ||

' before insert on ' || v_tablename ||

' for each row

declare next_id number;

begin

select seq_' || v_tablename ||

'.nextval into next_id from dual;

:new.id := next_id;

end;';

end loop;

end;

這樣總算是部分完成了,搭好了庫的骨架,剩下的就是血肉了.

對於部分表的字段如果使用pb的話也可能會加上「」,這樣查詢的時候必須修改程式保證大小寫一樣,這樣比較麻煩,當然可以使用

alter table tablename rename column "" to ..來替換,如果要全部替換最好寫個儲存過程,等以後有時間在寫吧!~~~

第二天:資料的匯入

由於實在是不知道有什麼別的更好的辦法,所以只能用sql2008的匯入匯出工具,感覺這個還不如sql2000的好用呢.....

不過這裡提乙個收費的工具convert mssql2oracle未完待續...........

悲催的IT 屌絲

突然發現好久沒有在這兒裡寫部落格了。忙,統一的,不變的藉口。哈哈。這一兩年來,越來越覺得it的業從業者的悲催。稱之為屌絲一點也不為過。現如之的專案越來越難打了,也越來越難做了。乙個專案要運作很久,有的都可以長到幾年。再短的也得半年,單子的額度也許並不大。但是我們面對的客戶都很nb。有人說,這是賣方市...

悲催的程式設計師,以及程式設計師的悲催

我盡量用平和一點的口吻跟你說說關於程式設計師的那點事兒。1.我在乙個叫摩托羅拉的公司幹過,那地方有50 的人整天幹的事情就是催另外25 的人沒完沒了的解剩下那25 的人造成的bug。我是個程式設計師,每天敲敲打打,哪天電腦崩潰了你會發現我這輩子啥都沒留下。大多數人甚至都沒有想過我們是怎麼把手機搗鼓出...

悲催的程式設計師,以及程式設計師的悲催

我盡量用平和一點的口吻跟你說說關於程式設計師的那點事兒。1.我在乙個叫摩托羅拉的公司幹過,那地方有50 的人整天幹的事情就是催另外25 的人沒完沒了的解剩下那25 的人造成的bug。我是個程式設計師,每天敲敲打打,哪天電腦崩潰了你會發現我這輩子啥都沒留下。大多數人甚至都沒有想過我們是怎麼把手機搗鼓出...