oracle在cmd下通過命令導入導出數據


1、首先在cmd下切換到oracle的客戶端的exp.exe所在的bin目錄下,例如

D:\oracle\product\10.2.0\client_2\BIN

數據導出:導出的數據庫名稱是在tnsnames.ora文件中定義的


 1 將數據庫zxcc完全導出,用戶名kf 密碼zx 導出到D:\zxcc.dmp

   exp kf/zx@zxcc file=d:\zxcc.dmp full=y

   

   full=y 表示全庫導出。full總共有2個可選項yes(y)/no(n),缺省情況下full=no,這時只會將該用戶下的對象導出。

   

 2 將數據庫zxcckf用戶與cc用戶的表導出

   exp kf/zx@zxcc file=d:\zxcc_ur.dmp owner=(kf,cc)

   

   full方式可以備份所有用戶的數據庫對象,包括表空間、用戶信息等,owner=XX只能備份指定用戶的對象,其他用戶下的就不備份了,EXPfull=yowner=XX是不能同時使用的。

 

 3 將數據庫zxcc中的表kf_operatorkf_role導出

    exp kf/zx@zxcc file= d:\zxcc_tb.dmp tables=(kf_operator,kf_role) 

    

    tables=xx 表示備份相關表,不能同時和ownerfull使用。

 

 4 將數據庫中的表kf_operator中的字段oper_id"00"打頭的數據導出

   exp kf/zx@zxcc file=d:\zxcc_t.dmp tables=(kf_operator) query=\" where oper_id like '00%'\"

   

   query主要是導出合適條件的數據。使用該參數時,需要注意對所有操作系統保留字符都要使用轉義符號。若有括號()也需要轉義:

   query=\"where dt=to_date\'20070922\',\'yyyymmdd\'\" 

   如果遇到條件比較繁瑣的語句,頻繁的轉義操作不僅費時,還很容易出錯。我們可以使用expexpdpPARFILE參數避免query內容的繁瑣轉義問題。

   例:

   oracle DBALNP01 > cat > zxcc.par

   tables=kf_operator

   file=zxcc.dmp

   query="where dt_time=to_date('2010-06-25','yyyy-mm-dd')" 

   這時就可以盡情的再雙引號中寫條件語句了。

 

   上面是常用的導出,對於比較大的數據庫,我們可以對導出文件進行壓縮處理,可用winzipdmp文件進行壓縮。

   也可以在上面命令后面加上 compress=y 來實現。

 5、//帶日志的導出
exp qmcb/qmcb@10.92.131.233:1521/qmcb file=f:/dmp/20171215.dmp log=qmcb20171225.log full=y;

 

數據的導入:

 1、將D:\zxcc.dmp 中的數據導入 zxcc數據庫中。

   imp kf/zx@zxcc file=D:\zxcc.dmp

   

   導數據得時候,有可能報錯。為什么?有以下主要的原因:

 

  A. 導入的對象(表,視圖,方法等)原本不屬於當前連接的用戶的

 

  B. 導入的對象在該數據庫的指定用戶下已經存在

 

  C. 導入的對象的原本用戶不在這個數據庫里

 

    對於這三個問題的處理方法如下:

    

    a/c、所有對象全部導入到指定的賬戶下:

    

    imp kf_new/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new

    

    其中fromuser=kf.dmp文件里的對象的原先的owner, touser=kf_new 為作為導入的對象的新的Owner.

    

    b、忽略/插入數據:

 

  imp kf_new/zx@zxcc_new file= d:\zxcc.dmp ignore=y

    

    其中ignore=y告訴imp.exe把數據直接插入到相應對象(並且如果導入的對象里面有其他的對象,如約束,索引等,會在數據插入后被創建)。

    

 2、將d:\zxcc_tb.dmp中的表tb_operator 導入

   imp kf/zx@zxcc  file=d:\zxcc_tb.dmp  tables=(tb_operator)

 

   忽略加載約束

 

  有時候導數據進來的時候,我們不需要把它的約束,比如一些外鍵約束等都導進來,可以加上參數constraints=N

 

  不加載索引(比如唯一性的索引),可以加上參數indexs=N

    

   只加載結構,不加載數據,如果只要表的結構等定義(約束,觸發器),而不要里面的數據,可以加上參數rows=N

 

  對於上述操作登陸操作的用戶需是管理員,如果不是管理員,而是普通用戶,那么這個用戶必須有創建刪除對象的權利,對象可能包括表,視圖,方法,存儲過程等等常見的對象。為什么“可能”包括?因為這個視導入導出的時候是否涉及相關類型的對象而定。 

   

   Imp kf/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new ignore=y

 

   基本上面的導入導出夠用了。不少情況要先是將表徹底刪除,然后導入。

 

注意:

   (1)、操作者要有足夠的權限,權限不夠會有提示。

   (2)、數據庫鏈接正常,可以用tnsping zxcc 來檢測數據庫zxcc能否連上。

   (3)、導入/導出數據庫時注意字符集。可能會出現導出/導入時數據庫字符集不一致而報錯。

 

oracle數據庫其他常用命令:

   1、給用戶增加導入數據權限的操作

第一,啟動sql*puls

    第二,以管理員(DBA)用戶登陸

    第三,create user 用戶名 IDENTIFIED BY 密碼 (如果已經創建過用戶,這步可以省略)

    第四,>grant create user , drop user , alter user , create any view , drop any view , exp_full_database , imp_full_database , dba , resource , create session to 用戶名字;

第五運行cmd進入dmp文件所在的目錄,

      imp userid=管理員用戶名/密碼 full=y file= filename.dmp

      或者 imp userid=管理員用戶名/密碼 full=y file=filename.dmp

 

   2Oracle 不允許直接改變表的擁有者利用Export/Import可以達到這一目的.

   先建立.par文件()

   然后,使用時命令如下:imp parfile=/filepath/import9.par

   例 import9.par 內容如下:

        FROMUSER=user       

        TOUSER=user_new     (注:把表的擁有者由FROMUSER改為TOUSERFROMUSERTOUSER的用戶可以不同)          

        ROWS=Y

        INDEXES=Y

        GRANTS=Y

        CONSTRAINTS=Y

        BUFFER=409600

        file==/filepath/xxxx.dmp

        log==/filepath/import_log.log

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM