好久沒有來這裡了,還就沒有發表文章了,這個月初,老闆突然決定要把整個專案轉為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。我是個程式設計師,每天敲敲打打,哪天電腦崩潰了你會發現我這輩子啥都沒留下。大多數人甚至都沒有想過我們是怎麼把手機搗鼓出...