成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL數據庫移植總結

開發 開發工具
MySQL是一種關聯數據庫管理系統,它將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

[[180166]]

一、前言

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

考慮到MySQL的諸多優點,很多通訊類軟件都開始采用MySQL作為其業務數據庫,前期采用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) 將類似執行沒有輸出參數的存儲過程的SQL語句exec %s..pr_xxx '%s'修改為call %s.pr_xxx ('%s')。

5) 將類似執行有輸出參數的存儲過程的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之下,因此,本節所使用的命令均是在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.執行SQL腳本

1) MySQL位于本機之上:

  1. mysql -uusername -p'pwd' -DDbName<test.sql  

(其中,username是用戶名,pwd是密碼,DbName是數據庫名,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數據庫的IP,3306是端口號,DbName是數據庫名,test.sql是SQL腳本名)

四、總結

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

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

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

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

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

 

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

責任編輯:武曉燕 來源: csdn博客
相關推薦

2019-01-02 11:10:40

MySQL數據庫數據庫設計

2017-07-12 09:20:42

SQLite數據庫移植

2019-07-11 08:45:00

MySQL數據庫緩存

2010-05-19 17:35:35

2012-06-20 11:17:02

MemSQL

2010-05-13 09:59:50

MySQL數據庫

2010-05-31 15:12:44

MySQL數據庫

2017-11-08 10:20:10

2011-08-05 14:02:17

MySQL數據庫異常處理

2011-07-19 16:36:25

Audit插件MySQL數據庫

2019-09-26 10:41:21

MySQL數據庫計數器

2019-11-07 15:39:36

數據庫MySQL文章

2019-09-16 08:28:17

Mysql數據庫binlog

2010-05-24 18:05:12

MySQL數據庫

2019-05-29 09:38:44

MySQL字符編碼數據庫

2010-05-24 17:42:44

MySQL數據庫

2010-05-20 17:31:17

MySQL數據庫

2011-05-12 13:48:07

MySql數據庫本地移植

2019-12-18 08:00:09

MySQL數據庫ORDER BY

2011-08-01 16:31:29

MySQL數據庫外鍵
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品亚洲一区二区三区在线观看 | 在线成人 | 国产在线一区二 | 久久精品中文 | 国产视频2021 | 涩涩鲁亚洲精品一区二区 | 国产精品明星裸体写真集 | 亚洲国产欧美日韩 | 欧美一级做性受免费大片免费 | 波多野结衣一二三区 | 国产精品99久久久久久久vr | 国产一级在线视频 | 日韩一区二区视频 | 中文字幕一区在线观看视频 | 国产一区精品在线 | 美日韩免费 | 国产乱码精品1区2区3区 | 免费一看一级毛片 | 91福利影院| 在线一区二区观看 | 精品一区二区在线看 | 综合久久99 | 精品美女 | 国产高清精品在线 | 美日韩一区二区 | 欧美日韩在线成人 | 久在线观看 | 亚洲欧洲色视频 | av中文字幕在线观看 | 精品九九 | 99pao成人国产永久免费视频 | www.狠狠干 | 中国一级大黄大片 | 久久九九99 | 国产精品1区 | 逼逼网 | 秋霞电影一区二区三区 | 牛牛热在线视频 | 国产亚洲日本精品 | 欧美xxxx性 | 正在播放国产精品 |