mysql換成oracle_從mysql轉換到oracle數據庫

最近做了幾個項目,我對項目的要求(有些也是客戶的要求)都是既要能用mysql數據庫,又要能用oracle數據庫,開發時盡量用mysql,等到發布時要求兩者都能適應。因為兩種數據庫還是許多具體的應用有些不同,而我們開發中采用的技術又有各種,所以基本上都是采用手動去轉換,具體轉換過程如下:

一、分表結構及表數據兩次導出。一次導出去轉換之后導入oracle中比較麻煩,所以我們一般在mysql導出時將導出分成個結構及個數據兩次導出。導出之后將個結構語句修改,具體修改如下:

二、對表的修改:

0、去掉`,`這個是mysql的特殊標示符,轉換前要去掉

1、將所有的text替換成varchar2(4000)。有些轉換工具將text是轉換成blob或clob,我覺得那樣不好,一般還是轉換成varchar2(2000)或varchar2(4000)比較好。雖然采用spring或oracle10g可以clob當作string去處理,但是我覺得一般情況下還是轉換成varchar2比較好,如果字段內容確實需要更長(varchar2最長是4000),在這種情況下采用clob就比較好了。

2、將所有的varchar替換成 varchar2 。

3、將tinyint(1)替換成number(1)。

4、將int(4)替換成number(4)。

5、去掉auto_increment選擇項。oracle中沒有自增屬性,所以要去掉。

6、將NOT NULL default ''替換成default '' NOT

NULL。關鍵是這兩個的順序不能錯,也不知道為什么,實際中總結出來的。

7、將ON DELETE CASCADE ON UPDATE CASCADE替換成ON DELETE CASCADE ON

UPDATE CASCADE。

8、將外鍵前的KEY cq_formid (cq_formid)去掉。

9、將CONSTRAINT 0_99 FOREIGN改成CONSTRAINT fk_99 FOREIGN。

10、將mediumblob轉換成blob。

11、將所有非主鍵的not null去掉。

12、將外鍵全部移到最后(在數據導完之后再執行)。

三、對數據修改:

0、去掉`,`這個是mysql的特殊標示符,轉換前要去掉,在做個結構轉換時也要去掉。

1、\'替換成''。\為mysql的轉義字符,而oracle的轉義字符為單引號。

2、?替換成?。這種是在執行sql插入語句一些特殊字符被oracle當做參數,這種我還沒有找到好的處理方法,一般就還是輸入相應的字符吧。有誰知道更好的處理方法可以告訴我一下。

3、,'',替換成,''''。這也是需要轉義引起的。

在程序處理中mysql與oracle數據庫還有些具體的不同,具體的不同情況如下:

mysql與oracle的不同:

1、mysql自動增量。oracle中沒有自動增量,一般采用序列去實現類似功能,但是需根在程序中特殊處理(采用hibernate時不需要特殊處理)。

2、limit。在mysql中一般采用limit去實現分頁功能,而oracle中一般采用rownum去實現分頁。

3、date。兩種數據庫對date的處理也不一樣,mysql中更加靈活吧。

4、LEFT函數。oracle中沒有相同的函數,我一般自定義一個left函數去實現mysql相同的功能,那樣就不用去修改程序了。

oracle中增加:

create or replace function LEFT(String1 in varchar2, pos in

integer)

return varchar2 is

begin

return(substr(String1, 0, pos));

end LEFT;

/

5、空與空串。mysql中空與空串是兩個不同的東西,而在oracle中將null與空串做了同樣的處理,這也是在程序中需要注意的于方。

6、rs.isLast()。當數據庫為mysql在Connection.prepareStatement(str1);可用,而在oracle中必須Connection.prepareStatement(str1,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)才能使用rs.isLast(),一般兩種情況都采用后面的就可以了吧。

7、在oracle中update fieldsdisplaymode f set

f.fdm_displaycontent=Translate(f.fdm_displaycontent,'\'',''''

);這是將insert語句中的\'全部替換成'',還是一種語義的轉換。

8、sysdate。在mysql中采用sysate()而在oracle中采用的是sysdate,兩個稍有不同,也可以在oracle中定義函數去處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270666.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270666.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硬件知識:視頻分配器、畫面分割器、矩陣、延長器相關知識介紹

目錄 1、視頻分配器 2、視頻切換器 3、視頻矩陣 4、畫面分割器 5、延長器 你知道視頻分配器,畫面分割器,矩陣各自的作用都是什么嗎?今天小編就為大家詳細的介紹下它們各自的區別。 1、視頻分配器 視頻分配器是一種把一個源平均分配成多路視頻…

UnityShader之Shader分類篇【Shader資料2】

關于ShaderLab,從我個人的理解上來看應該是分為三種類型。 1、Fixed function shader 固定渲染管線Shader,基于用于高級Shader在老顯卡無法顯示時的Fallback,使用的是ShaderLab語言,屬于真正的ShaderLab語言,和我們平時…

mysql 交叉連接_MySQL教程77-CROSS JOIN 交叉連接

之間所講的查詢語句都是針對一個表的,但是在關系型數據庫中,表與表之間是有聯系的,所以在實際應用中,經常使用多表查詢。多表查詢就是同時查詢兩個或兩個以上的表。在 MySQL 中,多表查詢主要有交叉連接、內連接和外連接…

python web django base skill

web框架本質 socket 業務邏輯框架實現socket tonado node.js 使用WSGI實現socket django flask 自己實現框架思路 wsgiref socket 路由系統 自己寫邏輯(views) jinja2 模板引擎(templates) 實現動態頁面,修改返回給瀏覽器的字符串 去…

電腦常見的VGA、DVI、PS/2、USB等接口知識筆記

我們經常見到電腦和網絡設備上都少不了VGA、DVI、PS/2、USB等常用接口,那些接口里面有多個針腳,他們每個針腳都有自己的用途,今天電腦學習小編就帶大家一起看看這些接口神秘用途。 現在很多朋友們可能會遇到VGA線或HDMI線不夠長,或…

mysql kill_Mysql使用kill命令解決死鎖問題(殺死某條正在執行的sql語句)

在使用mysql運行某些語句時,會因數據量太大而導致死鎖,沒有反映。這個時候,就需要kill掉某個正在消耗資源的query語句即可, KILL命令的語法格式如下:KILL [CONNECTION | QUERY] thread_id每個與mysqld的連接都在一個獨…

數據庫:MySQL、HBase、ElasticSearch三者對比

1、概念介紹 MySQL:關系型數據庫,主要面向OLTP,支持事務,支持二級索引,支持sql,支持主從、Group Replication架構模型(本文全部以Innodb為例,不涉及別的存儲引擎)。 HBas…

mysql 附加數據庫文件_mysql附加數據庫文件

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云數據庫專家保駕護航,為用戶…

SpringBoot集成Mybatis用法筆記

今天給大家整理SpringBoot集成Mybatis用法筆記。希望對大家能有所幫助&#xff01;搭建一個SpringBoot基礎項目。具體可以參考SpringBoot:搭建第一個Web程序引入相關依賴<dependencies><dependency><groupId>org.springframework.boot</groupId><ar…

wifi-mac

//18:a6:f7:12:0b:8b //18:a6:f7:1e:a9:57 //18:a6:f7:1f:8e:69 //18:a6:f7:12:0b:9c //18:a6:f7:1f:cd:d4 //18:a6:f7:1c:94:35 轉載于:https://www.cnblogs.com/mayidudu/p/5991781.html

網絡知識:交換機中的半雙工與全雙工知識筆記

今天小編給大家分享一下交換機中半雙工與全雙工相關知識&#xff0c;希望對大家能有所幫助&#xff01; 早期的網絡設備HUB&#xff08;集線器&#xff09;就是半雙工&#xff0c;目前基本沒有人用了&#xff0c;而現在用的SWITCH&#xff08;交換機&#xff09;就是全雙工。 a…

yum 安裝mysql 啟動_linux(centos6.9)下使用yum安裝mysql,及啟動MySQL等

查看系統自帶的mysql版本&#xff1a;rpm -qa | grep mysql卸載mysql&#xff1a;rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps1. 安裝mysql 服務器端&#xff1a;yum -y install mysql-server mysql-devel2. 安裝mysql客戶端&#xff1a;yum install mysql3. 啟動mysql服…

硬件知識:U盤插入電腦沒反應相關解決辦法整理

目錄 一、U盤可能被隱藏 二、USB端口被BIOS禁用 三、電腦的USB驅動可能有問題 今天小編給大家介紹一下U盤插入電腦沒反應相應的解決方案&#xff0c;希望對大家能有所幫助&#xff01; 一、U盤可能被隱藏 首先換臺電腦看看是不是U盤損壞的問題&#xff0c;如果不是&#xff0c;…

分享9個實用的電腦維修技巧,趕緊收藏吧

目錄 01、電腦不能上網 02、電腦藍屏 03、沒有聲音 04、沒有畫面 05、軟件無法啟動 06、顯示器畫面不能滿屏顯示 07、使用過程中自動關機 08、電腦不能開機 09、電腦花屏 今天給大家分享9個實用的電腦維修技巧&#xff0c;趕緊收藏吧&#xff01; 01、電腦不能上網 常見原因1&a…

自媒體資源:分享8個免版權視頻素材網站

目錄 01. 知魚素材 2、 gaiamount 3、 lifeofvids 4、Coverr 5、stock footage 6、vidsplay 7、Pixabay 8、Pexels 今天小編就給大家分享一些免版權的視頻素材網站&#xff0c;有需要的小伙伴趕緊歡迎收藏&#xff01; 01. 知魚素材 https://sucai.zhiyu.art/video 共享協議可免…

win7 mysql msi_windows下的Mysql安裝與基本使用(msi)

本文針對mysql5.6與5.5一、其他版本與安裝方式1.msi(mysql5.7及以上版本參考&#xff1a;https://www.cnblogs.com/zjiacun/p/6653891.html)這里我們用msi吧&#xff0c;只是單純練習的話&#xff0c;簡單很多二、msi安裝(5.5-5.6)1.點擊安裝文件&#xff0c;在出現的安裝向導上…

java中split以“.“ 、“\“、“|”分隔

今天項目里遇到以"." 、"\"、“|”分割字符串&#xff0c;直接用"." 、"\"、“|”無法分割&#xff0c;因為"." 、"\"、“|”是特殊字符&#xff0c;需要轉義&#xff0c;"\\." 、"\\\"、“\…