Oracle数据库的导入和导出的两种方式
首先,我們導入導出數據,肯定是要通過oracle自帶的可運行程序來完成數據的導入導出工作,imp.exe 和exp.exe這兩個可運行文件都放在oracle安裝目錄下的BIN目錄下。
1.以cmd命令操作符導入導出
先以cmd命令操作符來演示,比如我的BIN目錄是在:D:\app\Administrator\product\11.1.0\db_1\BIN 這里面。可以將該目錄添加到系統的環境變量中,這樣方便在cmd中直接使用exp和imp命令。
1.在使用exp和imp命令導入導出遠程的數據庫時,首先需要配置D:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目錄下有個tnsname.ora文件,內容如下:
ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.123)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))2.測試host地址是否可以連接成功:
在cmd中輸入:tnsping orcl
orcl是上面配置的數據庫的連接名稱
3.使用exp和imp命令導出導入數據庫
數據庫的導出(exp):
將數據庫orcl完全導出,用戶名scott密碼tiger導出到D:\daochu.dmp中 exp
scott/tiger@orclfile=d:\daochu.dmp full=y將數據庫中system用戶與sys用戶的表導出
exp scott/tiger@orcl file=d:\daochu.dmpowner=(system,sys)將數據庫中的表table1、table2導出
exp scott/tiger@orclfile=d:\daochu.dmptables=(table1,table2)將數據庫中的表table1中的字段filed1以”00”打頭的數據
exp scott/tiger@orcl file=d:\daochu.dmptables (table1)query=\”wherefiled1like’00%’\”
常用的導出,對于壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。
不過在上面命令后面加上compress=y就可以了
數據庫的導入(imp):
- 將D:\daochu.dmp中的數據導入orcl數據庫中。
imp scott/tiger@orcl file=d:\daochu.dmp
上面可能有點問題,因為有的表已經存在,然后它就報錯,對該表就不進行導入。
在后面加上ignore=y就可以了。
- 將d:\daochu.dmp中的表table1導入
imp scott/tiger@orcl file=d:\daochu.dmptables=(table1)
注意事項:導出dmp數據時需要有導出表的權限的用戶,否則不能導出。
詳細說明數據庫的導入導出命令(imp/exp):
exp導出數據以dmp格式的文件保存,命令符如下:
exp scott/tiger@orcl file=D:\database.dmp;exp –> 表示 執行BIN目錄下的exp.exe可運行程序
scott/tiger –> 分別表示導出數據的用戶名和密碼
orcl –> 表示 oracle數據庫的實例名稱
file –> 用于去指定我們導出的數據的存放位置。
執行完成之后就可以完成數據的導出需求。
imp導入數據到oracle數據庫中,命令符如下:
imp scott/tiger@orcl file=D:\database.dmp;語法和exp差不多,只不過最前面關鍵字不一樣而已。。
但是在實際中會出現一些錯誤,比如:
(1) 只有 DBA 才能導入由其他 DBA 導出的文件
這是由于指定的登錄用戶沒有導入導出數據的權限,
解決方案:grant dba to scott;
(2) 必須指定 FULL=Y 或提供 PROMUSER/TOUSER 或 TABLES 參數
這是由于oracle不知道你到底要導入多少數據,比如:全部還是具體到某幾張表,所以我們需要明確指定導入的數據表
解決方案: 在file 前面加上 full=y 全庫導出,或者指定表名tables=(tableName,tableName1) 即可,比如:
或者
imp scott/tiger@orcl file=D:\database.dmp tables=(tb1,tb2);(3)在導入數據的過程中可能會遇到 數據表已經存在的現象,可以同ignore=y 忽略掉,比如:
imp scott/tiger@orcl ignore=y file=D:\database.dmp;但是如果表結構發生變化,添加了唯一索引等等可能出現的問題,這一方法就不是很好了,可以考慮刪除該用戶之后,重建該用戶信息,這樣子就可以完整的導入數據了。
2.用PL/SQL Develpoer工具完成導入導出
如果覺得導入導出數據庫 每次都要輸入那么長一段命令不太好,可以用PL/SQL Develpoer自帶的Tools實現,其原理一樣,也是執行imp.exe 和exp.exe ,但是PL/SQL Develpoer已經幫我們封裝好了,要用直接指定數據庫地址就好了。
具體實現方式如下:
用賬號在PL/SQL Develpoer中連接oracle數據庫,然后 選擇Tools –> Import tables ,看到顯示了三個選項卡,分別是Oracle Import ,Sql Insert,PL/SQL Developer。
同樣的,在Tools –> Export tables,也有和上面選項卡對應的導出功能,它們分別是Oracle Export ,Sql Insert,PL/SQL Developer。
需要說明的是:
第一種導入導出為.dmp的文件格式,.dmp文件是二進制的,可以跨平臺,還能包含權限,效率也很不錯,用得最廣 。
第二種導入導出為.sql文件的,可用文本編輯器查看,通用性比較好,但效率不如第一種,適合小數據量導入導出。尤其注意的是表中不能有大字段(blob,clob,long),如果 有,會提示不能導出(提示如下:table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead),可以用第一種和第三種方式導出。
第三種導入導出為.pde格式的,.pde為PL/SQL Develpoer自有的文件格式,只能用PL/SQL Develpoer自己導入導出;不能用編輯器查看。
1、Oracle Import/Export
為了層次清晰一點,先看Oracle Import 和Oracle Export的導入導出功能。
打開Oracle Import導入窗口之后,效果圖如下所示:
左邊的多選框是控制我們導入數據時候 要導入的東東,比如數據表,索引,序列等等等之類的,勾上了才會去導入
右邊的Buffer size緩存大小,默認是30kb
From user 表示來自于哪個用戶導出的數據庫
To user 表示將導入的數據庫指定給哪一個用戶,這個必須指定
Import Exexutable 表示的是我們導入數據庫指定的導入工具,也就是指定Imp.exe 的位置, 我的是:d:\app\Administrator\product\11.1.0\db_1\bin\imp.exe
然后下面的Import file 指定的是我們導入的數據庫的路徑
點擊Import 按鈕,會彈出cmd命令窗口顯示我們導入的數據表明細,
效果圖如下:
同樣的,在導出的時候,在Oracle Export導出窗口中需要指定Output file 即導出文件的物理路徑,如下圖所示:
需要注意的是,上面列出的表全是當前用戶可操作的表,如果要多選的話按住Ctrl + 左鍵就好了。
選擇后,點擊Export 會看到導出的效果圖,如下:
并且PL/SQL Develpoer非常友好,如果發現已經有導出的文件,會有提示是否覆蓋,效果圖如下:
2、SQL Inserts
接下來我們來看下SQL Inserts 的導入導出的實現方式。
在它的導出界面 幾乎和Oracle Export 界面一樣,效果圖如下:
基本上上面的多選框 使用默認的就好,我們要選擇就是Output file 的導出物理路徑就好,并且上面已經說了 只能導出.sql文件格式的。
選擇完之后,點擊Export ,到已經導出的sql文件中看到,上面是一些創表創約束,觸發器等等的命令,下面千篇一律的是Insert into 的插入語句。
如下圖:
所以這方式導出的數據庫 導入的時候也很方便的,執行這里面所有的sql語句就可以了。
我們打開SQL Inserts 導入的界面看看,如下圖:
界面很簡單,直接指定sql文件的路徑就好了,然后點擊Import ,效果圖如下:
3、PL/SQL Developer
最后我們看看來PL/SQL Develpoer 自帶的導入導出功能。
在我們的PL/SQL Develpoer 導出選項卡中,可以看到幾乎和上面的實現方式沒有什么太大的差別,唯一不同的是必須指定文件格式為.pde格式的。界面效果如下圖:
點擊Export,界面上沒什么變化,可以根據下方的Exporting Done 知道 導出成功了。
然后在我們的PL/SQL Develpoer 導入選項卡中,可以看到如下操作界面:
細心的話會發現,選擇pde格式的文件后,右邊空白的地方會對應的加載該文件中存在的數據表,并且顯示出來。
點擊Import ,后需要等一會,才會導入成功,我發現用PL/SQL Develpoer 導入導出的時候效率最慢。
總結
以上是生活随笔為你收集整理的Oracle数据库的导入和导出的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse中取消控制台中打印的日志的
- 下一篇: 使用kettle将文本文件中的数据导入数