自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL數(shù)據(jù)庫移植總結(jié)

開發(fā) 開發(fā)工具
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),它將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。

[[180166]]

一、前言

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è)務(wù)數(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) 將獲取當(dāng)前時間的語句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) 將類似獲取當(dāng)前時間的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<test.sql  

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

2) MySQL在其它機器上:

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

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

四、總結(jié)

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

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

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

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

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

 

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: csdn博客
相關(guān)推薦

2019-01-02 11:10:40

MySQL數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計

2019-07-11 08:45:00

MySQL數(shù)據(jù)庫緩存

2017-07-12 09:20:42

SQLite數(shù)據(jù)庫移植

2010-05-13 09:59:50

MySQL數(shù)據(jù)庫

2010-05-19 17:35:35

2012-06-20 11:17:02

MemSQL

2010-05-31 15:12:44

MySQL數(shù)據(jù)庫

2011-08-05 14:02:17

MySQL數(shù)據(jù)庫異常處理

2017-11-08 10:20:10

2010-05-24 17:42:44

MySQL數(shù)據(jù)庫

2010-05-20 17:31:17

MySQL數(shù)據(jù)庫

2019-11-07 15:39:36

數(shù)據(jù)庫MySQL文章

2011-07-19 16:36:25

Audit插件MySQL數(shù)據(jù)庫

2019-09-26 10:41:21

MySQL數(shù)據(jù)庫計數(shù)器

2019-09-16 08:28:17

Mysql數(shù)據(jù)庫binlog

2010-05-24 18:05:12

MySQL數(shù)據(jù)庫

2019-05-29 09:38:44

MySQL字符編碼數(shù)據(jù)庫

2010-11-03 08:41:55

MySQL

2010-11-29 11:51:59

Sybase數(shù)據(jù)庫維護

2019-12-26 17:25:22

數(shù)據(jù)庫設(shè)計技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號