日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL數(shù)據(jù)庫移植總結(jié)

一、前言

淮上網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

MySQL是一個由瑞典MySQL AB公司開發(fā)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前歸屬Oracle公司旗下。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),它將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。

考慮到MySQL的諸多優(yōu)點,很多通訊類軟件都開始采用MySQL作為其業(yè)務數(shù)據(jù)庫,前期采用Oracle或Sybase的軟件也啟動了向MySQL數(shù)據(jù)庫移植的工作。本文基于作者近期將Sybase數(shù)據(jù)庫移植為MySQL數(shù)據(jù)庫的工作,總結(jié)了在移植過程中需要修改的主要數(shù)據(jù)庫語法及一些基本的操作MySQL的命令。

二、需要修改的數(shù)據(jù)庫語法

1.基本語法

1) 將類似select xxx from %s..tb_xxx where xxx的語法修改為select xxx from %s.tb_xxx where xxx。

2) 將類似select top N * from tb_xxx的語法(查詢前N條記錄)修改為select * from tb_xxx limit N。

3) 將獲取當前時間的語句convert(varchar(10),getdate(),102)+' '+convert(varchar(10),getdate(),108))修改為date_format(now(),'%Y.%m.%d %T')。

4) 將類似執(zhí)行沒有輸出參數(shù)的存儲過程的SQL語句exec %s..pr_xxx '%s'修改為call %s.pr_xxx ('%s')。

5) 將類似執(zhí)行有輸出參數(shù)的存儲過程的SQL語句exec %s..pr_xxx 1, '%s', 0, 0, %d, '', %d, 0, 0修改為call %s.pr_xxx(1,'%s',0,0,%d,'',%d,0,0,@1,@2,@3,@4,@5,@6);select@1,@2,@3,@4,@5,@6。

2.在存儲過程中

1) 將類似drop procedure pr_xxx語句修改為drop procedure if exists pr_ xxx;語句。

2) 在類似drop procedure if exists pr_ xxx;語句之后要添加delimiter //語句。

3) 對類似存儲過程輸入輸出參數(shù)作如下修改:

 
 
  1. createprocedure pr_xxx 
  2.     @aaa        varchar(40), 
  3.     @bbb        varchar(10), 
  4.     @ccc        varchar(20), 
  5.     @ddd        int  out 

修改為:

 
 
  1. createprocedure pr_ xxx 
  2.        in   p_ aaa         varchar(40), 
  3.        in   p_ bbb         varchar(10), 
  4.        in   p_ ccc         varchar(20), 
  5.        out   p_ ddd        int 

4) 將類似定義的參數(shù)作如下修改:

 
 
  1. declare 
  2.         @aaa             int, 
  3.         @bbb             varchar(20),     
  4.         @ccc             int,          
  5.         @ddd             int,  

修改為:

 
 
  1. declare p_aaa         int; 
  2.        declare p_bbb         varchar(20); 
  3.        declare p_ccc         int; 
  4.        declare p_ddd         int; 

5) 將類似if @aaa = x語句修改為if p_aaa = x then語句。

6) 將類似select @aaa = x的初始化語句修改為set p_aaa = x;。

7) 將類似select @aaa=bbb from tb_xxx where ccc=yyy的語句修改為select bbb int op_aaa from tb_xxx where ccc=yyy;。

8) 將類似if語句修改如下:

 
 
  1. if xxx 
  2. begin 
  3.  
  4. end 
  5. else 
  6. begin 
  7.  
  8. end 

修改為:

 
 
  1. if xxx then 
  2. begin 
  3.  
  4. end; 
  5. else 
  6. begin 
  7.  
  8. end; 
  9. end if; 

9) 將類似獲取當前時間的select @curtime=convert(varchar(50),getdate(),102)+''+convert(varchar(50),getdate(),108)語句修改為set p_curtime=date_format(now(),'%Y.%m.%d %T');。

10) 將類似select @curdatetime = dateadd(minute, @tzonemin, @curdatetime)語句修改為set p_curdatetime=date_add(p_curdatetime,interval p_tzonemin minute);。

11) 將return語句修改為leave pr_xxx_label;。

12) 對存儲過程***的end語句作如下修改:

 
 
  1. end 

修改為;

 
 
  1. end; 
  2. // 
  3. delimiter ; 

13) 將存儲過程***的print語句作如下修改:

 
 
  1. print 'create procedure:pr_xxx ok!' 

修改為:

 
 
  1. select 'create procedure pr_ xxx ok!'; 

14) 將類似的if語句作如下修改:

 
 
  1. if xxx 
  2. begin 
  3.  
  4. end 
  5. else if yyy 
  6. begin    
  7.  
  8. end 
  9. else if zzz 
  10. begin    
  11.  
  12. end 
  13. else 
  14. begin 
  15.  
  16. end 

修改為:

 
 
  1. if xxx then 
  2. begin 
  3.  
  4. end; 
  5. elseif yyy then 
  6. begin    
  7.  
  8. end; 
  9. elseif zzz then 
  10. begin    
  11.  
  12. end; 
  13. else 
  14. begin 
  15.  
  16. end; 
  17. end if; 

15) 將類似select @maxcnt = convert(int,@tmpstr)語句修改為set p_maxcnt=convert(p_tmpstr,signed);語句。

16) 將類似select @boxnumber = convert(varchar,@tmpstr)語句修改為set p_boxnumber=convert(p_tmpstr, char(20));語句。

17) 將類似lasttime<=dateadd(day, 0-convert(int,dayvalue), getdate())語句修改為lasttime<=concat(date_format(date_sub(now(),interval convert(dayvalue,signed) day),'%Y.%m.%d'),' ',date_format(now(),'%T'))語句。

三、一些基本的操作MySQL的命令

作者所使用的數(shù)據(jù)庫位于Linux之下,因此,本節(jié)所使用的命令均是在Linux之下運行的。

1.啟動MySQL

 
 
  1. xpecdmoni 

2.停止MySQL

 
 
  1. xsuperstop 

3.登錄MySQL

1)MySQL位于本機之上:

 
 
  1. mysql -uusername -p'pwd'  

(其中,username是用戶名,pwd是密碼)

2)MySQL在其它機器上:

 
 
  1. mysql -uusername -p'pwd' –h0.1.1.1-P3306 

(其中,username是用戶名,pwd是密碼,0.1.1.1是MySQL數(shù)據(jù)庫的IP,3306是端口號)

4.切換數(shù)據(jù)庫

 
 
  1. use DbName; 

(其中,DbName是數(shù)據(jù)庫名)

5.退出MySQL

 
 
  1. quit;

6.執(zhí)行SQL腳本

1) MySQL位于本機之上:

 
 
  1. mysql -uusername -p'pwd' -DDbName

(其中,username是用戶名,pwd是密碼,DbName是數(shù)據(jù)庫名,test.sql是SQL腳本名)

2) MySQL在其它機器上:

 
 
  1. mysql -uusername -p'pwd' –h0.1.1.1 -P3306 -DDbName

(其中,username是用戶名,pwd是密碼,0.1.1.1是MySQL數(shù)據(jù)庫的IP,3306是端口號,DbName是數(shù)據(jù)庫名,test.sql是SQL腳本名)

四、總結(jié)

在進行數(shù)據(jù)庫移植的過程中,我們需要注意以下問題:

1.只修改必須要修改的代碼,不能更改業(yè)務邏輯。要將修改之后的代碼與修改之前的代碼進行反復的對比,確保代碼修改的正確性。

2.要對修改之后的代碼和腳本等進行全方位的測試,確保業(yè)務邏輯的正確性。

3.如果有某段代碼或存儲過程是公用的,那么只需要指定某個人修改就可以了,這樣也可以防止重復勞動。

【本文是專欄作者周兆熊的原創(chuàng)文章,作者微信公眾號:周氏邏輯(logiczhou)】


當前標題:MySQL數(shù)據(jù)庫移植總結(jié)
文章鏈接:http://m.5511xx.com/article/djdhpdj.html