熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

MYSQL到ORACLE程序遷移需要注意的事項

2013-11-13 15:32:29  來源: Oracle 

  有很多應用項目 剛起步的時候用MYSQL數據庫基本上能實現各種功能需求隨著應用用戶的增多數據量的增加MYSQL漸漸地出現不堪重負的情況連接很慢甚至宕機於是就有把數據從MYSQL遷到ORACLE的需求應用程序也要相應做一些修改本人總結出以下幾點注意事項希望對大家有所幫助
  
  . 自動增長的數據類型處理
  MYSQL有自動增長的數據類型插入記錄時不用操作此字段會自動獲得數據值ORACLE沒有自動增長的數據類型需要建立一個自動增長的序列號插入記錄時要把序列號的下一個值賦於此字段
  
  CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY  START WITH  MAXVALUE  CYCLE NOCACHE;
  其中最大的值按字段的長度來定 如果定義的自動增長的序列號 NUMBER() 最大值為
  INSERT 語句插入這個字段值為: 序列號的名稱NEXTVAL
  
   單引號的處理
  MYSQL裡可以用雙引號包起字符串ORACLE裡只可以用單引號包起字符串在插入和修改字符串前必須做單引號的替換把所有出現的一個單引號替換成兩個單引號
  
   翻頁的SQL語句的處理
  MYSQL處理翻頁的SQL語句比較簡單用LIMIT 開始位置 記錄個數PHP裡還可以用SEEK定位到結果集的位置ORACLE處理翻頁的SQL語句就比較繁瑣了每個結果集只有一個ROWNUM字段標明它的位置 並且只能用ROWNUM<100, 不能用ROWNUM>
  以下是經過分析後較好的兩種ORACLE翻頁SQL語句( ID是唯一關鍵字的字段名 )
  語句一
  SELECT ID [FIELD_NAME] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW ID FROM TABLE_NAME WHERE 條件 ORDER BY 條件) WHERE NUMROW > AND NUMROW < ) ORDER BY 條件;
  
  語句二
  SELECT * FROM (( SELECT ROWNUM AS NUMROW c* from (select [FIELD_NAME] FROM TABLE_NAME WHERE 條件 ORDER BY 條件) c) WHERE NUMROW > AND NUMROW < ) ORDER BY 條件;
  
  . 長字符串的處理
  長字符串的處理ORACLE也有它特殊的地方INSERT和UPDATE時最大可操作的字符串長度小於等於個單字節 如果要插入更長的字符串 請考慮字段用CLOB類型方法借用ORACLE裡自帶的DBMS_LOB程序包插入修改記錄前一定要做進行非空和長度判斷不能為空的字段值和超出長度字段值都應該提出警告返回上次操作
  
   日期字段的處理
  MYSQL日期字段分DATE和TIME兩種ORACLE日期字段只有DATE包含年月日時分秒信息用當前數據庫的系統時間為SYSDATE 精確到秒或者用字符串轉換成日期型函數TO_DATE(YYYYMMDD)年小時:分鐘:秒 的格式YYYYMMDD HH:MI:SS TO_DATE()還有很多種日期格式 可以參看ORACLE DOC日期型字段轉換成字符串函數TO_CHAR(YYYYMMDD HH:MI:SS)
  
  日期字段的數學運算公式有很大的不同MYSQL找到離當前時間天用 DATE_FIELD_NAME > SUBDATE(NOW()INTERVAL DAY)ORACLE找到離當前時間天用 DATE_FIELD_NAME >SYSDATE ;
  
   空字符的處理
  MYSQL的非空字段也有空的內容ORACLE裡定義了非空字段就不容許有空的內容按MYSQL的NOT NULL來定義ORACLE表結構 導數據的時候會產生錯誤因此導數據時要對空字符進行判斷如果為NULL或空字符需要把它改成一個空格的字符串
  
   字符串的模糊比較
  MYSQL裡用 字段名 like %字符串%ORACLE裡也可以用 字段名 like %字符串% 但這種方法不能使用索引 速度不快用字符串比較函數 instr(字段名字符串)> 會得到更精確的查找結果
  
   程序和函數裡操作數據庫的工作完成後請注意結果集和指針的釋放

From:http://tw.wingwit.com/Article/program/Oracle/201311/16886.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.