av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

MySQL數據庫移植總結

一、前言

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

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

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

二、需要修改的數據庫語法

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í)行沒有輸出參數的存儲過程的SQL語句exec %s..pr_xxx '%s'修改為call %s.pr_xxx ('%s')。

5) 將類似執(zhí)行有輸出參數的存儲過程的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) 對類似存儲過程輸入輸出參數作如下修改:

 
 
  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) 將類似定義的參數作如下修改:

 
 
  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的命令

作者所使用的數據庫位于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數據庫的IP,3306是端口號)

4.切換數據庫

 
 
  1. use DbName; 

(其中,DbName是數據庫名)

5.退出MySQL

 
 
  1. quit;

6.執(zhí)行SQL腳本

1) MySQL位于本機之上:

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

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

2) MySQL在其它機器上:

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

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

四、總結

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

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

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

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

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


分享題目:MySQL數據庫移植總結
當前路徑:http://uogjgqi.cn/article/djdhpdj.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流