真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

sqlserver遷移,sqlserver遷移到oracle

sqlserver轉(zhuǎn)oracle(三) 數(shù)據(jù)遷移及數(shù)據(jù)結(jié)構(gòu)處理

sqlserver向oracle導(dǎo)入數(shù)據(jù)結(jié)構(gòu),本文主要使用Navicate,在表結(jié)構(gòu)導(dǎo)入完成的情況下,我們依然需要進(jìn)行一些簡(jiǎn)單的處理,才能讓程序正常運(yùn)行。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供宛城網(wǎng)站建設(shè)、宛城做網(wǎng)站、宛城網(wǎng)站設(shè)計(jì)、宛城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、宛城企業(yè)網(wǎng)站模板建站服務(wù),10余年宛城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

在表結(jié)構(gòu)導(dǎo)入完成后,我們已經(jīng)可以在oracle的連接下看到我們導(dǎo)入的表結(jié)構(gòu),但如果你進(jìn)行查詢,可能會(huì)得到的結(jié)果是:"ORA-00942: 表或視圖不存在

",比如下圖:

sql server 怎么遷移數(shù)據(jù)庫(kù)

1、真心不建議你遷移系統(tǒng)數(shù)據(jù)庫(kù),太麻煩了。就一個(gè)系統(tǒng)用戶賬號(hào)就夠你累的了。

2、我一般都是在新計(jì)算機(jī)上安裝新的SQL服務(wù)實(shí)例,然后逐個(gè)遷移用戶數(shù)據(jù)庫(kù)

3、只需要向用戶貼出安民告示即可,也就半個(gè)小時(shí)到1一個(gè)小時(shí),基本上全部搞定。

若非要遷移,那么你可以這樣做:

首先遷移master數(shù)據(jù)庫(kù),master數(shù)據(jù)庫(kù)是整個(gè)SQL Server實(shí)例的核心,所有的設(shè)置都存放在master數(shù)據(jù)庫(kù)里,如果master數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題,整個(gè)實(shí)例都將癱瘓。首先打開(kāi)SQL Server Configuration Manager,在左邊的列表框中選中SQL Server Services節(jié)點(diǎn),然后在右邊的列表框中找到需要遷移系統(tǒng)數(shù)據(jù)庫(kù)的實(shí)例的那個(gè)SQL Server服務(wù),比如說(shuō)SQLServer(MSSQLSERVER),停止這個(gè)實(shí)例的服務(wù)(不會(huì)停的去菜場(chǎng)買塊豆腐撞死算了),然后右鍵單擊,選中最底下的“Properties”,并且切換到“Advanced”標(biāo)簽,如下圖所示:

看到“Startup Parameters”了吧,這里的參數(shù)就是需要我們更改的。如下圖所示:

把這段字符整理一下就是這樣:

-dC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;

-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;

-lC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

基本上看出來(lái)了吧,“-d”后面的就是master數(shù)據(jù)庫(kù)數(shù)據(jù)文件的位置,“-e”是該SQL Server實(shí)例的錯(cuò)誤日志所在的位置,至于“-l”就是master數(shù)據(jù)庫(kù)日志文件所在的位置了。修改數(shù)據(jù)文件和日志文件的路徑到適當(dāng)為位置,錯(cuò)誤日志的位置一般不需要做變更,例如將數(shù)據(jù)文件存放到D盤(pán)的SQLData文件夾下,日志文件存放到E盤(pán)的SQLLog文件夾下,則參數(shù)如下:

-dD:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lE:\SQLLog\mastlog.ldf

點(diǎn)擊“OK”保存并關(guān)閉對(duì)話框。

如何把sqlserver的數(shù)據(jù)遷移到mysql中

以下有幾款遷移工具的對(duì)比,可以參考,比較推薦DB2DB.

軟件易用性主要是指軟件在導(dǎo)入前的配置是否容易。由于很多軟件設(shè)計(jì)是面向程序員而非一般的數(shù)據(jù)庫(kù)管理人員、甚至是普通的應(yīng)用程序?qū)嵤┤藛T,而這一類人員很多時(shí)候并沒(méi)有數(shù)據(jù)源配置經(jīng)驗(yàn)。因?yàn)橐恍┦褂?ODBC 或者 ADO 進(jìn)行配置的程序往往會(huì)讓這類用戶造成困擾(主要是不知道應(yīng)該選擇什么類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序)。下面讓我們看看四個(gè)工具的設(shè)計(jì)界面:

1、SQLyog

SQLyog?使用的是古老的 ODBC 連接,但對(duì)于新一代的程序來(lái)說(shuō),這種方式的非常的不熟悉并且不容易使用,并且必須要求本機(jī)安裝好相應(yīng)的數(shù)據(jù)庫(kù)的 ODBC 驅(qū)動(dòng)程序(SQL Server 一般自帶好)。

2、Navicat?Premium

NavicatPremium是四個(gè)應(yīng)用工具中設(shè)計(jì)最不人性化的一個(gè):從上圖怎么也想像不到要點(diǎn)按那個(gè)小按鈕來(lái)添加一個(gè)新的連接,并且這個(gè)連接設(shè)置不會(huì)保存,每次導(dǎo)入時(shí)都必須重新設(shè)置。NavicatPremium使用的是比 ODBC 稍先進(jìn)的 ADO 設(shè)置方式(199X年代的產(chǎn)物),但使用上依然是針對(duì)老一代的程序員。

3、Mss2sql

Mss2sql?是最容易在百度上搜索出來(lái)的工具,原因之一是它出現(xiàn)的時(shí)間較早。

Mss2sql由于是很有針對(duì)性的從 SQLServer 遷移到 MySQL,因?yàn)榻缑媸褂昧瞬僮飨驅(qū)гO(shè)計(jì),使用非常容易。同時(shí)在設(shè)置的過(guò)程中,有非常多的選項(xiàng)進(jìn)行細(xì)節(jié)調(diào)整,可以感覺(jué)到軟件經(jīng)過(guò)了相當(dāng)長(zhǎng)一段時(shí)間的使用漸漸完善出來(lái)的。

4、DB2DB

DB2DB?由于是由國(guó)人開(kāi)發(fā),因此無(wú)論是界面還是提示信息,都是全程漢字。另外,由于 DB2DB 在功能上很有針對(duì)性,因?yàn)榻缑嬖O(shè)計(jì)一目了然和易使用。和 mss2sql 一樣, DB2DB 提供了非常多的選項(xiàng)供用戶進(jìn)行選擇和設(shè)置。

三、處理速度和內(nèi)存占用評(píng)測(cè)

在本評(píng)測(cè)前,本人的一位資深同事曾經(jīng)從網(wǎng)上下載了某款遷移軟件,把一個(gè)大約2500萬(wàn)記錄數(shù)的數(shù)據(jù)表轉(zhuǎn)送到阿里云 MySQL,結(jié)果經(jīng)過(guò)了三天三夜(好在其中兩天是星期六和星期日兩個(gè)休息日)都未能遷移過(guò)來(lái)。因此這一次需要對(duì)這四個(gè)工具的處理速度作一個(gè)詳細(xì)的測(cè)試。

考慮到從 SQL Server 遷移到 MySQL 會(huì)出現(xiàn)兩種不同的場(chǎng)景:

從 SQL Server 遷移到本地 MySQL 進(jìn)行代碼測(cè)試和修改;

從 SQL Server 遷移到云端 MySQL 數(shù)據(jù)庫(kù)正式上線使用;

以下為測(cè)試過(guò)程中的截圖:

1、SQLyog

請(qǐng)點(diǎn)擊輸入圖片描述

2、Navicat Premium

請(qǐng)點(diǎn)擊輸入圖片描述

請(qǐng)點(diǎn)擊輸入圖片描述

注意:我們?cè)跍y(cè)試 Navicat Premium 遷移到 ?MySQL 時(shí)發(fā)現(xiàn),對(duì)于 SQL Server 的 Money 類型支持不好(不排除還有其它的數(shù)據(jù)類型支持不好)。Money 類型字段默認(rèn)的小數(shù)位長(zhǎng)度為 255,使得無(wú)法創(chuàng)建數(shù)據(jù)表導(dǎo)致整個(gè)測(cè)試無(wú)法成功,需要我們逐張表進(jìn)行表結(jié)構(gòu)修改才能完成測(cè)試過(guò)程。

Navicat Premium?的處理速度屬于中等,不算快也不算慢,但 CPU 占用還有內(nèi)存占用都處于高位水平。不過(guò)以現(xiàn)在的電腦硬件水平來(lái)說(shuō),還是可以接受。但 CPU 占用率太高,將使得數(shù)據(jù)在導(dǎo)入的過(guò)程中,服務(wù)器不能用于其它用途。

3、Mss2sql

Mss2sql?并沒(méi)有提供計(jì)時(shí)器,因此我們使用人工計(jì)時(shí)的方法,整個(gè)過(guò)程處理完畢大于是 726 秒。Mss2sql 的 CPU 占用率相對(duì)其它工具來(lái)說(shuō)較高,但仍屬于可以接受的范圍之內(nèi)。

4、DB2DB

請(qǐng)點(diǎn)擊輸入圖片描述

DB2DB?同樣遷移 300萬(wàn)數(shù)據(jù)時(shí),僅僅使用了 2 分 44 秒,這個(gè)速度相當(dāng)驚人。不過(guò)最后的結(jié)果出現(xiàn)一個(gè) BUG,就是提示了轉(zhuǎn)換成功,但后面的進(jìn)度條卻沒(méi)有走完(在后面的數(shù)據(jù)完整性評(píng)測(cè)中,我們驗(yàn)證了數(shù)據(jù)其實(shí)是已經(jīng)全部處理完畢了)。

如何把sqlserver數(shù)據(jù)遷移到mysql數(shù)據(jù)庫(kù)及需要注意事項(xiàng)

二、將SQL

Server數(shù)據(jù)遷移到MySQL需要注意的一些問(wèn)題

1、唯一索引的不同,sql

server的唯一索引的字段只能允許存在一個(gè)null值,而mysql,一直oracle中唯一索引對(duì)應(yīng)的字段都允許存在多個(gè)null值。

2、存儲(chǔ)過(guò)程的語(yǔ)法存在很大的不同,存儲(chǔ)過(guò)程的遷移是最麻煩的,需要仔細(xì)修改。

3、程序中部分寫(xiě)的SQL語(yǔ)句由于語(yǔ)法的不同也要相應(yīng)的修改。

三、將SQL

Server數(shù)據(jù)遷移到MySQL的常見(jiàn)方法

1、使用 SQLyog 遷移

優(yōu)點(diǎn)

該遷移方法很簡(jiǎn)單,靈活,遷移時(shí),可以進(jìn)行字段的修改,比如在sql

server中原來(lái)是datetime,然后遷移到mysql時(shí)你可以配置成timestamp;成功率很高;

缺點(diǎn)

遷移很慢!這是該方法最大的缺點(diǎn),如果表的數(shù)據(jù)量達(dá)到幾十萬(wàn)行,甚至幾百萬(wàn)行,你會(huì)發(fā)現(xiàn)遷移起來(lái)真的很慢。明顯比其他遷移方法慢很多。

2、使用 powerdesigner 和 sql server 的腳本導(dǎo)出功能 來(lái)遷移

(1)、該方法首先使用 powerdesigner,對(duì)sql

server數(shù)據(jù)庫(kù),進(jìn)行逆向工程,得到E-R圖,然后生成MySQL的建表語(yǔ)句。完成數(shù)據(jù)庫(kù)結(jié)構(gòu)的遷移;當(dāng)然表結(jié)構(gòu)的遷移,不使用powerdesigner一樣也是可以的。比如我將表結(jié)構(gòu)導(dǎo)出成語(yǔ)句,然后手動(dòng)進(jìn)行修改,然后在MySQL中運(yùn)行,也是一樣的;

(2)、然后使用 sql server的工具 SSMS,將sql

server數(shù)據(jù)庫(kù)中的表的數(shù)據(jù),導(dǎo)出成insert語(yǔ)句,每個(gè)表對(duì)應(yīng)導(dǎo)出一個(gè)文件,然后對(duì)文件進(jìn)行一些處理,然后導(dǎo)入到MySQL數(shù)據(jù)庫(kù)中。

3、使用Oracle MySQL Server 官方的 workbeach 工具進(jìn)行遷移

(1)、在workbench 連接sql server時(shí),用戶需要有 view any database 的權(quán)限。不然workbench無(wú)法訪問(wèn)sql

server的表結(jié)構(gòu)的元數(shù)據(jù),從而無(wú)法進(jìn)行遷移。

(2)、還有使用 Navicat 來(lái)進(jìn)行遷移的方法,方法和 SQLyog 是類似的。

如何完整地遷移SQL SERVER

有幾種方式,需要你自己判斷。

物理對(duì)拷方式:

如果是sqlerver對(duì)sqlserver 可以考慮用庫(kù)直接對(duì)拷,此方法比較省事。

1.分離,在新書(shū)庫(kù)上附加。

2.備份,在新數(shù)據(jù)上建立同樣名稱的庫(kù),還原。

3.數(shù)據(jù)全部導(dǎo)出,此方法可以在導(dǎo)出數(shù)據(jù)時(shí)選擇導(dǎo)出目標(biāo)庫(kù)。

邏輯對(duì)拷方式:

這個(gè)方法限于數(shù)據(jù)的量不大的情況下使用,太多就別指望了,主要是針對(duì)局部需要處理的數(shù)據(jù)進(jìn)行人為曬選時(shí)使用。

1.將數(shù)據(jù)導(dǎo)出成excel格式,再根據(jù)需要處理后導(dǎo)入新庫(kù)表。

2.利用工具抽取,我記得sqlserver有個(gè)工具可以直接對(duì)接到數(shù)據(jù)進(jìn)行抽取推送,效率還不錯(cuò)。

3.自己寫(xiě)jdbc的鏈接然后抽取插入進(jìn)指定的地方,我一般都是用這種,主要是轉(zhuǎn)換和比對(duì)的太多,純粹的從邏輯層面或者從物理層面不是很方便復(fù)用。

如何把sql server數(shù)據(jù)庫(kù)遷移到oracle

前陣做了下數(shù)據(jù)庫(kù)遷移,從Sql Server2005遷移到Oracle

10g,這里說(shuō)一下遷移的方法。

Sql

Server和Oracle區(qū)別比較大,包括語(yǔ)法,字段類型,數(shù)據(jù)庫(kù)機(jī)制,配置管理方法等等,區(qū)別是全方位的,做遷移需要注意很多問(wèn)題,在遷移過(guò)程中也會(huì)遇到問(wèn)題,需要細(xì)細(xì)處理之。這里說(shuō)一下數(shù)據(jù)庫(kù)結(jié)構(gòu)的遷移,和遷移過(guò)程中注意的一些問(wèn)題。(當(dāng)然具體的數(shù)據(jù)庫(kù)遷移過(guò)程中可能問(wèn)題是不一樣的,具體問(wèn)題具體分析了)

遷移的方法是從Sql Server已有數(shù)據(jù)庫(kù)中生成出Oracle的建庫(kù)腳本,然后在Oracle數(shù)據(jù)庫(kù)上執(zhí)行。用到的生成工具是Power

Designer。

1、打開(kāi)PD(Power

Designer簡(jiǎn)稱,以下均使用PD),新建一個(gè)PDM(物理數(shù)據(jù)模型),DBMS選擇Microsoft SQL

Server2005,Model name起名叫做mssdb。

2、通過(guò)逆向工程將現(xiàn)有Sql

Server數(shù)據(jù)庫(kù)生成PDM

(1)選擇Database-Reverse

Engineer Database,配置數(shù)據(jù)源,選擇要遷移的數(shù)據(jù)庫(kù),輸入用戶名、密碼。

(2)選擇數(shù)據(jù)庫(kù),選擇用戶dbo下的所有表、視圖、存儲(chǔ)過(guò)程、方法、觸發(fā)器、序列等(由于Sql Server與oracle,數(shù)據(jù)庫(kù)概念上的區(qū)別,這里不需選擇用戶、角色)。

點(diǎn)擊OK,生成PDM。已經(jīng)建立過(guò)PDM的情況,這一步可以省略。

3、生成Oracle物理數(shù)據(jù)模型

選擇Tools-Generate Physical Data Model

(1)DBMS選擇Oracle

10g,輸入名稱:oradb。

(2)在Configure Model

Options配置中, Model Settings的TableView界面中,勾選Ignore

identifying owner。Oracle中用戶的概念與Sql Server不同,這里忽略owner。

(3)Selection標(biāo)簽,選擇需要生成的所有表、視圖、外鍵、存儲(chǔ)過(guò)程、方法、觸發(fā)器、序列等。

點(diǎn)擊確定,即生成了oracle 的PDM。

注意,在生成PDM的過(guò)程中可能不會(huì)一帆風(fēng)順,有可能會(huì)報(bào)錯(cuò)(比如提示對(duì)象長(zhǎng)度超限),這會(huì)導(dǎo)致生成失敗。這時(shí)需要根據(jù)具體錯(cuò)誤提示做相應(yīng)修改(可能需要多次調(diào)整,沒(méi)有辦法,誰(shuí)讓兩者差別這么大的呢)。

4、生成Oracle腳本

與Sql

Server不同的是,在Oracle里表名、字段名全部為大寫(xiě),若要單獨(dú)處理為小寫(xiě),需加上雙引號(hào)。而PD生成的腳本默認(rèn)是有雙引號(hào)的,這里需要修改默認(rèn)配置,去掉雙引號(hào)。

然后選擇oradb,然后選擇Database-Generate

Database,進(jìn)入數(shù)據(jù)庫(kù)生成界面

在Format標(biāo)簽下,去掉勾選Owner prefix,它將省掉建表語(yǔ)句前“dbo.”所帶來(lái)的麻煩;

在Selection標(biāo)簽下,選擇要生成腳本的各對(duì)象;

在Preview標(biāo)簽下,可以預(yù)覽預(yù)生成的腳本(表較多時(shí),切換會(huì)比較慢)。

點(diǎn)擊確定,即得到生成的腳本。

5、檢查與調(diào)整

腳本是PD自動(dòng)生成的,因?yàn)楸肀容^多,在oracle上直接去執(zhí)行難免會(huì)有錯(cuò)誤。所以在執(zhí)行之前需要檢查下腳本的正確性。這里提幾點(diǎn)需要注意的地方。

(1)Oracle要求表名、字段名等長(zhǎng)度最多是30位,而Sql Server沒(méi)有這個(gè)限制,所以可能會(huì)有在Sql

Server創(chuàng)建正常的表而在Oracle下會(huì)創(chuàng)建失敗。

(2)檢查一下主鍵、外鍵的名稱,它們有可能是隨機(jī)生成的名稱??筛鶕?jù)相應(yīng)規(guī)范進(jìn)行修改。

(3)檢查字段名是否用到了Oracle的關(guān)鍵字。比如Sql

Server命名“備注”字段可能會(huì)用“comment”、標(biāo)題用“title”,但comment、title在Oracle中是關(guān)鍵字,不可以做為字段名稱。

(4)存儲(chǔ)過(guò)程、方法是否符合Oracle語(yǔ)法。

(5)Sql

Server有自增字段,而Oracle沒(méi)有。要實(shí)現(xiàn)此功能,需要相應(yīng)創(chuàng)建序列、觸發(fā)器。

(6)Sql

Server中字段類型為text的情況,如果是存二進(jìn)制數(shù)據(jù)需要在Oracle中選用Blob字段類型。

(7)Sql

Server有外鍵的情況,主表記錄刪除,從表記錄也會(huì)跟著刪除;而Oracle默認(rèn)情況是當(dāng)從表有記錄時(shí),所對(duì)應(yīng)的主表記錄不允許刪除。所以這種情況下外鍵需要添加外鍵級(jí)聯(lián)刪除。

(8)生成的表、視圖等個(gè)數(shù)是否正確,缺失的情況可單獨(dú)生成腳本。

系統(tǒng)不一樣,出現(xiàn)問(wèn)題的點(diǎn)可能也不一樣,具體問(wèn)題具體分析。

6、建庫(kù)

在Oracle數(shù)據(jù)庫(kù)服務(wù)(當(dāng)然要先安裝好Oracle服務(wù)端、并建立數(shù)據(jù)庫(kù))orcl實(shí)例下,使用用戶sys登陸并創(chuàng)建用戶orauser,并將resource、connect角色賦給orauser(這里,orauser使用默認(rèn)表空間、默認(rèn)臨時(shí)表空間)。

用剛創(chuàng)建的用戶orauser登陸orcl數(shù)據(jù)庫(kù)服務(wù),執(zhí)行前面已經(jīng)生成的腳本,若干分鐘后腳本執(zhí)行完畢,觀察一下執(zhí)行過(guò)程中有無(wú)錯(cuò)誤產(chǎn)生,也可以記錄執(zhí)行的日志以便日后查看;檢查看表、視圖等個(gè)數(shù)與Sql

Server數(shù)據(jù)庫(kù)中是否一致。如果都正確,那么,數(shù)據(jù)庫(kù)結(jié)構(gòu)從Sql

Server到Oracle的遷移到此結(jié)束。當(dāng)然,遷移的是否正確還需要在之后的使用中檢查,發(fā)現(xiàn)錯(cuò)誤及時(shí)修改即可。


文章標(biāo)題:sqlserver遷移,sqlserver遷移到oracle
網(wǎng)站地址:http://weahome.cn/article/hdjpji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部