以下有幾款遷移工具的對比,可以參考,比較推薦DB2DB.
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比太康網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式太康網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋太康地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
軟件易用性主要是指軟件在導(dǎo)入前的配置是否容易。由于很多軟件設(shè)計是面向程序員而非一般的數(shù)據(jù)庫管理人員、甚至是普通的應(yīng)用程序?qū)嵤┤藛T,而這一類人員很多時候并沒有數(shù)據(jù)源配置經(jīng)驗。因為一些使用 ODBC 或者 ADO 進(jìn)行配置的程序往往會讓這類用戶造成困擾(主要是不知道應(yīng)該選擇什么類型的數(shù)據(jù)庫驅(qū)動程序)。下面讓我們看看四個工具的設(shè)計界面:
1、SQLyog
SQLyog?使用的是古老的 ODBC 連接,但對于新一代的程序來說,這種方式的非常的不熟悉并且不容易使用,并且必須要求本機(jī)安裝好相應(yīng)的數(shù)據(jù)庫的 ODBC 驅(qū)動程序(SQL Server 一般自帶好)。
2、Navicat?Premium
NavicatPremium是四個應(yīng)用工具中設(shè)計最不人性化的一個:從上圖怎么也想像不到要點按那個小按鈕來添加一個新的連接,并且這個連接設(shè)置不會保存,每次導(dǎo)入時都必須重新設(shè)置。NavicatPremium使用的是比 ODBC 稍先進(jìn)的 ADO 設(shè)置方式(199X年代的產(chǎn)物),但使用上依然是針對老一代的程序員。
3、Mss2sql
Mss2sql?是最容易在百度上搜索出來的工具,原因之一是它出現(xiàn)的時間較早。
Mss2sql由于是很有針對性的從 SQLServer 遷移到 MySQL,因為界面使用了操作向?qū)гO(shè)計,使用非常容易。同時在設(shè)置的過程中,有非常多的選項進(jìn)行細(xì)節(jié)調(diào)整,可以感覺到軟件經(jīng)過了相當(dāng)長一段時間的使用漸漸完善出來的。
4、DB2DB
DB2DB?由于是由國人開發(fā),因此無論是界面還是提示信息,都是全程漢字。另外,由于 DB2DB 在功能上很有針對性,因為界面設(shè)計一目了然和易使用。和 mss2sql 一樣, DB2DB 提供了非常多的選項供用戶進(jìn)行選擇和設(shè)置。
三、處理速度和內(nèi)存占用評測
在本評測前,本人的一位資深同事曾經(jīng)從網(wǎng)上下載了某款遷移軟件,把一個大約2500萬記錄數(shù)的數(shù)據(jù)表轉(zhuǎn)送到阿里云 MySQL,結(jié)果經(jīng)過了三天三夜(好在其中兩天是星期六和星期日兩個休息日)都未能遷移過來。因此這一次需要對這四個工具的處理速度作一個詳細(xì)的測試。
考慮到從 SQL Server 遷移到 MySQL 會出現(xiàn)兩種不同的場景:
從 SQL Server 遷移到本地 MySQL 進(jìn)行代碼測試和修改;
從 SQL Server 遷移到云端 MySQL 數(shù)據(jù)庫正式上線使用;
以下為測試過程中的截圖:
1、SQLyog
請點擊輸入圖片描述
2、Navicat Premium
請點擊輸入圖片描述
請點擊輸入圖片描述
注意:我們在測試 Navicat Premium 遷移到 ?MySQL 時發(fā)現(xiàn),對于 SQL Server 的 Money 類型支持不好(不排除還有其它的數(shù)據(jù)類型支持不好)。Money 類型字段默認(rèn)的小數(shù)位長度為 255,使得無法創(chuàng)建數(shù)據(jù)表導(dǎo)致整個測試無法成功,需要我們逐張表進(jìn)行表結(jié)構(gòu)修改才能完成測試過程。
Navicat Premium?的處理速度屬于中等,不算快也不算慢,但 CPU 占用還有內(nèi)存占用都處于高位水平。不過以現(xiàn)在的電腦硬件水平來說,還是可以接受。但 CPU 占用率太高,將使得數(shù)據(jù)在導(dǎo)入的過程中,服務(wù)器不能用于其它用途。
3、Mss2sql
Mss2sql?并沒有提供計時器,因此我們使用人工計時的方法,整個過程處理完畢大于是 726 秒。Mss2sql 的 CPU 占用率相對其它工具來說較高,但仍屬于可以接受的范圍之內(nèi)。
4、DB2DB
請點擊輸入圖片描述
DB2DB?同樣遷移 300萬數(shù)據(jù)時,僅僅使用了 2 分 44 秒,這個速度相當(dāng)驚人。不過最后的結(jié)果出現(xiàn)一個 BUG,就是提示了轉(zhuǎn)換成功,但后面的進(jìn)度條卻沒有走完(在后面的數(shù)據(jù)完整性評測中,我們驗證了數(shù)據(jù)其實是已經(jīng)全部處理完畢了)。
以下是我的解決方法:
第一步:導(dǎo)入到access中
偶然之中使用mssql進(jìn)行數(shù)據(jù)導(dǎo)出時,看到可以導(dǎo)出到access數(shù)據(jù)庫,所以就嘗試了下,中文沒有亂碼現(xiàn)象.
我使用的是ms
sql
2005:
操作流程:數(shù)據(jù)庫任務(wù)導(dǎo)出數(shù)據(jù)數(shù)據(jù)源(默認(rèn)即可)
sql
native
client,并且在下面要選擇數(shù)據(jù)庫目標(biāo)(選擇access,并選擇一個要導(dǎo)出的數(shù)據(jù)庫)"復(fù)制一個或多個表數(shù)據(jù)"(默認(rèn))選擇表數(shù)據(jù)導(dǎo)出
第二步:把數(shù)據(jù)從access中導(dǎo)入到mysql中
在這里,選擇使用Access2MySQL
這個軟件,google一下,有很多可以下載的版本,最好使用一個破解版的
可以直接導(dǎo)入,最好mssql和mysql的表的結(jié)構(gòu)沒有兼容性,如果有兼容性,可以選擇先在mysql中創(chuàng)建數(shù)據(jù)庫和表,然后進(jìn)行導(dǎo)入.
因我mssql的數(shù)據(jù)庫和mysql的數(shù)據(jù)庫沒有兼容性,因此,我直接就導(dǎo)入了.
導(dǎo)入時也很簡單,安裝Access2MySQL之后,打開軟件,選擇"源數(shù)據(jù)庫"(access)和目標(biāo)數(shù)據(jù)庫(mysql,要選擇要導(dǎo)入到哪個數(shù)據(jù)庫中),直接commit就可以了
這樣轉(zhuǎn)換有一個優(yōu)點,就是不用很麻煩的設(shè)置,就可以直接實現(xiàn)mssql到mysql的轉(zhuǎn)換.
最主要的方式就是借助于一個中介(access),完成轉(zhuǎn)換.
轉(zhuǎn)換一般會遇到的問題:
1 、 大小寫敏感的區(qū)別( 如果服務(wù)器 OS 是linux) 。
在oracle 中一般情況下不區(qū)分大小寫。有時候我們在使用oracle 不注意大小寫的問題,表名和字段名不加雙引號是不區(qū)分大小寫的,像這樣:insert into tableName 和 insert into TABLENAME 效果是一樣的,用工具導(dǎo)出創(chuàng)建/ 數(shù)據(jù)初始化腳本,得到的結(jié)果一般表名和字段名轉(zhuǎn)化成了大寫。
但在MySQL 中,所使用操作系統(tǒng) 的大小寫敏感性決定了數(shù)據(jù)庫名和表名的大小寫敏感性。數(shù)據(jù)庫對應(yīng)數(shù)據(jù)目錄中的目錄,數(shù)據(jù)庫中的每個表至少對應(yīng)數(shù)據(jù)庫目錄中的一個文件( 也可能是多個,取決于存儲引擎) 。因此,使用數(shù)據(jù)庫或表實際上是操縱這些文件( 夾) ,所以使用操作系統(tǒng)的大小寫敏感性決定了數(shù)據(jù)庫名和表名的大小寫敏感性。在以linux 為內(nèi)核的操作系統(tǒng)中是大小寫敏感的。
解決的辦法是把mysql 的數(shù)據(jù)庫名和oracle 的大小寫保持一致,表名與應(yīng)用程序中sql 字符串中的表名保持一致,如果應(yīng)用程序中字段名用了雙引號,那請把sql 中的字段名大小寫與雙引號里的字符保持一致。如果你的應(yīng)用程序所引用的表名、字段沒有統(tǒng)一大小寫,那麻煩就大了。
2 、保留字的區(qū)別。
像sql 語言的函數(shù)名( 如:inteval ,show) 等是保留字。Oracle 中保留字是可以作為表名和字段名,并且不影響使用,但mysql 中保留字是不能作為表名和字段名,如果使用會報語法錯誤。
解決辦法,把sql 語句中的保留字用‘`’ 符號引起來,這個符號位于鍵盤 的tab 鍵上面; 如果是字段名還有另外一種方法tablename. 字段名。像這樣:insert into tablename (id, `interval`) value(….. 或insert into tablename (id, tablename.inteval) value(….. 。
3 、數(shù)據(jù)類型的區(qū)別。
在mysql 中沒有像oracle 中的varchar2 、number ,mysql 有與之對應(yīng)的varchar 、numeric ,當(dāng)然在oracle中沒有mysql 的time 類型。
解決辦法是替換。
找一個工具,可以把sql的數(shù)據(jù)轉(zhuǎn)成insert into這樣的sql語句的。
存儲過程和觸 發(fā)器是要重新寫的。
然后,建好mysql的數(shù)據(jù)庫后,運行 insert語句,
再把存儲過程和觸 發(fā)器的腳本運行一下。
您好,很高興為您解答。\x0d\x0a\x0d\x0a1、MYSQL的工具使用navicat;\x0d\x0a2、SQL在安裝的時候,需要安裝SQL native Clent,并且開啟服務(wù);\x0d\x0a3、在navicat中創(chuàng)建數(shù)據(jù)連接,創(chuàng)建一個對應(yīng)的空數(shù)據(jù)庫\x0d\x0a4、創(chuàng)建數(shù)據(jù)庫后,打開數(shù)據(jù)庫,選擇導(dǎo)入向?qū)x0d\x0a\x0d\x0a5、導(dǎo)入向?qū)Ю铮x擇ODBC\x0d\x0a\x0d\x0a6、點下一步,導(dǎo)入里面選擇sql native client;\x0d\x0a\x0d\x0a7、下一步,選擇使用windows NT 集成安全設(shè)置,數(shù)據(jù)庫選擇你要轉(zhuǎn)換的數(shù)據(jù)庫,確定\x0d\x0a\x0d\x0a8、如表結(jié)構(gòu)完全一樣,那么就全選數(shù)據(jù)表吧,確定,因我們是新建的數(shù)據(jù)庫,里面是空的,那么默認(rèn)是創(chuàng)建表,如果是要導(dǎo)入到已經(jīng)有的表結(jié)構(gòu)里,則在目標(biāo)表里選擇要導(dǎo)入的目標(biāo)表,然后選字段。注意在第6步的時候,選對表的主鍵進(jìn)行設(shè)置!\x0d\x0a\x0d\x0a9、如果是添加數(shù)據(jù),則選擇:添加記錄到目標(biāo)表;如果是需要ID值跟源數(shù)據(jù)庫一致,則選擇復(fù)制,刪除目標(biāo)全部數(shù)據(jù),并從源數(shù)據(jù)重新導(dǎo)入\x0d\x0a\x0d\x0a注意,導(dǎo)入的時候,如果是已存在表結(jié)構(gòu),則鍵位不能空,如果是添加數(shù)據(jù),則ID值空著,不要添加主鍵,在導(dǎo)入過程中如果出現(xiàn)錯誤,則根據(jù)出錯提示處理,此方法絕對可以!\x0d\x0a\x0d\x0a如若滿意,請點擊右側(cè)【采納答案】,如若還有問題,請點擊【追問】\x0d\x0a\x0d\x0a希望我的回答對您有所幫助,望采納!\x0d\x0a\x0d\x0a ~ O(∩_∩)O~
mysql的分頁簡單多了,關(guān)鍵字limit,
sql結(jié)尾增加:
limit
offset,
size
select
*
from
test
limit
pagenum*currentpgae,pagenum