91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle和MySQL的數據導入方式有什么區別

發布時間:2020-08-15 11:46:19 來源:億速云 閱讀:114 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Oracle和MySQL的數據導入方式有什么區別的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

經常會有一些朋友咨詢我一些數據庫的問題,我注意到一個很有意思的現象,凡是數據導入的問題,基本上都是Oracle類的,MySQL類的問題腦子里想了下竟然一次都沒有。

我禁不住開始思考這個未曾注意的問題:

為什么Oracle導入數據會碰到很多的問題?

我們來梳理一下這個問題,分別從導出導入的方式來聊聊。

首先Oracle導出的文件格式就沒打算讓你拿來即用,導出文件叫做dump,換句話說可以理解這是一個二進制文件。當然實際上這個文件還是有很多的方式去抓取一些關鍵的信息,比如dump頭部的信息可以通過strings來解析得到,我甚至在多年前碰到一個比較棘手的問題,DBA直接vim修改dump文件,這個操作風險和成本是比較高的。

導出有哪些工具呢,主要有exp,expdp這兩個工具,expdp的導出性能相對來說可以更加充分利用系統資源,導出的效率更高。exp相對來說對于一些小表還是比較省事的,expdp的導出是基于服務端模式的,也就是你需要做一些數據庫層的配置才可以,這無疑增加了一些技術門檻。

不知道大家注意到一個問題沒有,那就是Oracle提供了SQL*Loader的工具導入,但是卻沒有一直提供一種簡單有效的導出csv的工具,在導出的時候算是各路英雄漢使盡各種技藝,結合數據字典,結合文本過濾來完成。

MySQL的導出方法相對比較簡單,設計思路很有意思,導出的文件就是可以直接打開,可以直接修改的SQL文件。這個設計在很多應用場景中簡直絕了,對于開發同學是非常友好的。

導出工具原生的有mysqldump,新版本的是mysqlpump(總體感覺性價比不是很高),當然還有一些補充的第三方工具,比如mydumper之類的。

所以導出這件事情,對于開發同學本身是有一個門檻的,而且在隔行如隔山的情況下,很多同學使用expdp導出的時候都一頭霧水。從安全性來看,這個二進制文件是原汁原味的,從靈活性來看,MySQL基于SQL文本的方式是比較便捷。

導出的部分其實不是最主要的,產生隔閡最大的是導入的部分,也是提出問題最多的。

MySQL有什么數據導入工具,可以理解沒有,就是SQL文本,你想怎么執行都可以。包括工具mysqldump,mysqlpump導出的文件都是如此,mydump有個配套的myloader算是一個小小的例外。

Oracle有什么導入工具,有,而且是配套的,exp對應imp,expdp對應impdp

常見的數據導入問題有:

1)提示用戶創建失敗,導入失敗

2)提示表空間不存在,導入失敗

3)導入時如果創建的數據文件空間不足,導入失敗

4)導入時的用戶權限不足,導入失敗

所以我要導入一個dump文件,如果是exp導出的,解析成本還算低一些。

而如果是expdp導出的,通常很多開發同學都會一臉懵逼。

1)導入要輸入一個目錄,什么是目錄,不是系統目錄嗎?

2)如果數據庫用戶已經存在,已經存在10張表,導入的時候默認會直接忽略這10章表,除非你手工刪除或者選擇額外的選項,比如replace或者truncate等。

3)表空間源端和目標端環境不一致,要想知道到底有哪些表空間不一致,解析dump文件實話說不是很方便,有一個高級選項是remap_tablespaces

4)數據導入之后,業務同學發現有些表還是訪問不了,不好,需要重新分配下權限。

通常來說,如果要導入一個dump,在Oracle側其實是一件很嚴肅的事情,我們需要創建目錄:

create directory dump_data as '/data/dump_data';

grant read,write on directory dump_data to xxxx;

配置表空間存儲,有哪些表空間,哪些表空間需要映射,在數據導入之前,這些信息其實是不好提取的。我通常采用的方式是做下預導入,就是找個干凈的環境,然后默認選項導入,看看哪些表空間報錯,哪些用戶報錯,把這些信息提取出來,然后重新拼接一個導入命令。

在這個基礎上我去構建相關的表空間和數據文件的細節。

對于數據文件,我不大喜歡自動擴展的方式,而是喜歡預創建出來,然后加上自動擴展。

最后就是文件導入

impdp system/xxxx directory=dump_data dumpfile=test.DMP logfile=impdp_test.log remap_tablespace=TEST_DATA1:DATA,TEST_DATA2:DATA,TEST_INDEX1:IDX,TEST_INDEX2:IDX

對于Oracle DBA來說,這應該是再正常不過的事情了,而且有很多地方要做到細致周到的多,但是這樣一個過程對于一個外行來說,成本就很高了。

總是有一種感覺,Oracle就像汽車里面的寶馬一樣,操控性很好,提供了很多專業有效的管理方式。

而Oracle的角色通常都是百GB起,TB上下,這樣的數據量管理,就得適配出各種工具特點和特性。我覺得這些工具一直在追求的是更加高效和安全,可能從這個角度理解,Oracle的維護管理模式是需要專人來完成的。

MySQL的管理方式很適合互聯網這種變化快,而且數據量相對要小一些的環境。在易用性和學習門檻方便簡直是做到了極致,比如你要到處一些有特色的insert語句(比如按照主鍵排序,顯示完全列名等),都可以通過mysqldump很容易實現。

感謝各位的閱讀!關于Oracle和MySQL的數據導入方式有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太保市| 津南区| 沭阳县| 松江区| 寻乌县| 洪江市| 桐庐县| 濉溪县| 桃园县| 郧西县| 冀州市| 郴州市| 藁城市| 曲阜市| 晋中市| 渝北区| 行唐县| 韶山市| 皮山县| 乌拉特中旗| 五峰| 阿拉善左旗| 常宁市| 崇信县| 奉化市| 海盐县| 奈曼旗| 海城市| 敦化市| 垣曲县| 林芝县| 曲松县| 株洲市| 安图县| 攀枝花市| 安龙县| 邵武市| 湾仔区| 北海市| 新巴尔虎右旗| 海安县|