Oracle Imp exp使用方法

 Oracle Imp 使用詳解
Oracle導入程序Imp的使用詳解
                                      
Oracle的導入實用程序(Import utility)允許從數據庫提取數據,並且將數據寫入操作系統文件。imp使用的基本格式:imp[username[/password[@service]]],以下例舉imp常用用法。

1. 獲取幫助

 imp help=y2. 導入一個完整數據庫

 imp system/manager file=bible_db log=dible_db full=y ignore=y3. 導入一個或一組指定用戶所屬的全部表、索引和其他對象

 imp system/manager file=seapark log=seapark fromuser=seapark imp  system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 將一個用戶所屬的數據導入另一個用戶

 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)5. 導入一個表

 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)6. 從多個文件導入

 imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G full=y7. 使用參數文件

 imp system/manager parfile=bible_tables.parbible_tables.par參數文件: #Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
8. 增量導入


 imp system./manager inctype= RECTORE FULL=Y FILE=A
Oracle imp/exp
C:/Documents and Settings/administrator>exp help=y
Export: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
 
通過輸入 EXP 命令和用戶名/口令,您可以後接用戶名/口令的命令:
例程: EXP SCOTT/TIGER
或者,您也可以通過輸入跟有各種參數的 EXP 命令來控制“導出”按照不同參數。要指定參數,您可以使用關鍵字:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字  說明(默認)        關鍵字      說明(默認)--------------------------------------------------------------------------USERID   用戶名/口令           FULL         導出整個文件 (N)BUFFER   數據緩衝區大小         OWNER     所有者用戶名列表FILE       輸出文件 (EXPDAT.DMP)  TABLES       表名稱列表COMPRESS   導入到一個區 (Y) RECORDLENGTH IO 記錄的長度GRANTS  導出權限 (Y)           INCTYPE      增量導出類型INDEXES    導出索引 (Y)         RECORD       跟蹤增量導出 (Y)DIRECT     直接路徑 (N)            TRIGGERS     導出觸發器 (Y)LOG        屏幕輸出的日誌文件  STATISTICS   分析對象 (ESTIMATE)ROWS    導出數據行 (Y)        PARFILE      參數文件名CONSISTENT 交叉表的一致性 (N) CONSTRAINTS  導出的約束條件 (Y)
OBJECT_CONSISTENT    只在對象導出期間設置爲讀的事務處理 (N)FEEDBACK             每 x 行的顯示進度 (0)FILESIZE             每個轉儲文件的最大大小FLASHBACK_SCN        用於將會話快照設置回以前狀態的 SCNFLASHBACK_TIME       用於獲取最接近指定時間的 SCN 的時間QUERY                用於導出表的子集的 select 子句RESUMABLE            遇到與空格相關的錯誤時掛起 (N)RESUMABLE_NAME       用於標識可恢復語句的文本字符串RESUMABLE_TIMEOUT    RESUMABLE 的等待時間TTS_FULL_CHECK       對 TTS 執行完整的或部分相關性檢查TABLESPACES          要導出的表空間列表TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)TEMPLATE             調用 iAS 模式導出的模板名
在沒有警告的情況下成功終止導出。==================================================
C:/Documents and Settings/administrator>imp help=y
Import: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:06:54 2004
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
 
可以通過輸入 IMP 命令和您的用戶名/口令後接用戶名/口令的命令:
例程: IMP SCOTT/TIGER
或者, 可以通過輸入 IMP 命令和各種參數來控制“導入”按照不同參數。要指定參數,您可以使用關鍵字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字  說明(默認)        關鍵字      說明(默認)--------------------------------------------------------------------------USERID   用戶名/口令           FULL         導入整個文件 (N)BUFFER   數據緩衝區大小         FROMUSER     所有人用戶名列表FILE     輸入文件 (EXPDAT.DMP)    TOUSER       用戶名列表SHOW     只列出文件內容 (N) TABLES      表名列表IGNORE   忽略創建錯誤 (N)    RECORDLENGTH  IO 記錄的長度GRANTS  導入權限 (Y)           INCTYPE      增量導入類型INDEXES 導入索引 (Y)          COMMIT       提交數組插入 (N)ROWS    導入數據行 (Y)        PARFILE      參數文件名LOG      屏幕輸出的日誌文件   CONSTRAINTS  導入限制 (Y)DESTROY                覆蓋表空間數據文件 (N)INDEXFILE              將表/索引信息寫入指定的文件SKIP_UNUSABLE_INDEXES  跳過不可用索引的維護 (N)FEEDBACK               每 x 行顯示進度 (0)TOID_NOVALIDATE        跳過指定類型 ID 的驗證FILESIZE               每個轉儲文件的最大大小STATISTICS             始終導入預計算的統計信息RESUMABLE            在遇到有關空間的錯誤時掛起 (N)RESUMABLE_NAME         用來標識可恢復語句的文本字符串RESUMABLE_TIMEOUT      RESUMABLE 的等待時間COMPILE                編譯過程, 程序包和函數 (Y)STREAMS_CONFIGURATION  導入 Streams 的一般元數據 (Y)STREAMS_INSTANITATION  導入 Streams 的實例化元數據 (N)
下列關鍵字僅用於可傳輸的表空間TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)TABLESPACES 將要傳輸到數據庫的表空間DATAFILES 將要傳輸到數據庫的數據文件TTS_OWNERS 擁有可傳輸表空間集中數據的用戶
成功終止導入,但出現警告。

 

oracle的imp和exp的一些用法- -
                                      
 
Oracle8i/9i EXP/IMP使用經驗  一、8i EXP常用選項
1、FULL,這個用於導出整個數據庫,在ROWS=N一起使用時,可以導出整個數據庫的結構。例如:
exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y
2、BUFFER和FEEDBACK,在導出比較多的數據時,我會考慮設置這兩個參數。例如:
exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT
3、FILL和LOG,這兩個參數分別指定備份的DMP名稱和LOG名稱,包括文件名和目錄,例子見上面。
需要說明的是,EXP可以直接備份到磁帶中,即使用FILE=/dev/rmt0(磁帶設備名),但是一般我們都不這麼做,原因有二:一、這樣做的速度會慢很多,二、現在一般都是使用磁帶庫的,不建議直接對磁帶進行操作。至於沒有使用磁帶庫的朋友可以考慮和UNIX的TAR結合使用。
如果你真想使用EXP直接到磁帶,你可以參考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文檔號:30428.1),該文中有詳細解釋。
4、COMPRESS參數將在導出的同時合併碎塊,儘量把數據壓縮到initial的EXTENT裏,默認是N,一般建議使用。DIRECT參數將告訴EXP直接讀取數據,而不像傳統的EXP那樣,使用SELECT來讀取表中的數據,這樣就減少了SQL語句處理過程。一般也建議使用。不過有些情況下DIRECT參數是無法使用的。
5、如何使用SYSDBA執行EXP/IMP?
這是一個很現實的問題,有時候我們需要使用SYSDBA來執行EXP/IMP,如進行傳輸表空間的EXP/IMP,以及在9i下用SYS用戶來執行EXP/IMP時,都需要使用SYSDBA纔可。我們可以使用下面方式連入EXP/IMP:
exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n
6、QUERY參數後面跟的是where條件,值得注意的是,整個where子句需要使用""括起來,where子句的寫法和SELECT中相同,如果是UNIX平臺所有"和'都需要使用/u26469屏蔽它們的特殊含義:
exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"
如果是windows平臺,則使用下面的格式:
exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""
二、8i IMP常用選項
1、FROMUSER和TOUSER,使用它們實現將數據從一個SCHEMA中導入到另外一個SCHEMA中。
2、IGNORE、GRANTS和INDEXES,其中IGNORE參數將忽略表的存在,繼續導入,這個對於需要調整表的存儲參數時很有用,我們可以先根據實際情況用合理的存儲參數建好表,然後直接導入數據。而GRANTS和INDEXES則表示是否導入授權和索引,如果想使用新的存儲參數重建索引,或者爲了加快到入速度,我們可以考慮將INDEXES設爲N,而GRANTS一般都是Y。
另外一個EXP/IMP都有的參數是PARFILE,它是用來定義EXP/IMP的參數文件,也就是說,上面的參數都可以寫在一個參數文件中,但我們一般很少使用。
三、Oracle9i EXP功能描述
Oracle9i EXP在原有的基礎上新增了部分新的參數,按功能主要分爲以下幾個部分:
1、OBJECT_CONSISTENT - 用於設置EXP對象爲只讀以保持對象的一致性。默認是N。
2、FLASHBACK_SCN和FLASHBACK_TIME - 用於支持FLASHBACK功能而新增。
3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用於支持RESUMABLE空間分配而新增。
4、TTS_FULL_CHECK - 用於在傳輸表空間時使用依賴性檢查。
5、TEMPLATE - 用於支持iAS。
6、TABLESPACES - 設置表空間導出模式。個人覺得對於一般用戶而言,這個纔是新增參數中最實用的一個,可以讓用戶在原來的FULL、OWNER、TABLES的基礎上多了一種選擇,使得EXP更加靈活。
四、不同版本的EXP/IMP問題?
一般來說,從低版本導入到高版本問題不大,麻煩的是將高版本的數據導入到低版本中,在Oracle9i之前,不同版本Oracle之間的EXP/IMP可以通過下面的方法來解決:
1、在高版本數據庫上運行底版本的catexp.sql;
2、使用低版本的EXP來導出高版本的數據;
3、使用低版本的IMP將數據庫導入到底版本數據庫中;
4、在高版本數據庫上重新運行高版本的catexp.sql腳本。
但在9i中,上面的方法並不能解決問題。如果直接使用底版本EXP/IMP會出現如下錯誤:
EXP-00008: ORACLE error %lu encountered
ORA-00904: invalid column name
這已經是一個公佈的BUG,需要等到Oracle10.0才能解決,BUG號爲2261,你可以到METALINK上去查看有關此BUG的詳細信息。
BUG歸BUG,我們的工作還是要做,在沒有Oracle的支持之前,我們就自己解決。在Oracle9i中執行下面的SQL重建exu81rls視圖即可。
CREATE OR REPLACE view exu81rls 
(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy) 
AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname, 
decode(bitand(r.stmt_type,1), 0,'', 'SELECT,') 
|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,') 
|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,') 
|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'), 
r.check_opt, r.enable_flag, 
DECODE(BITAND(r.stmt_type, 16), 0, 0, 1) 
from user$ u, obj$ o, rls$ r 
where u.user# = o.owner# 
and r.obj# = o.obj# 
and (uid = 0 or 
uid = o.owner# or 
exists ( select * from session_roles where role='SELECT_CATALOG_ROLE') 


grant select on sys.exu81rls to public; 

五、其他問題
本文只討論了Oracle8i和9i中的EXP/IMP的一些情況,對於之前的版本,在8.0.X中,除了QUERY參數不能用外,其它差別不大。針對沒有QUERY的情況,我們可以先在數據庫中使用查詢條件建立臨時中間表,然後使用EXP導出這個中間表即可。至於Oracle7因爲目前使用的人較少,gototop不打算在此做詳細解釋了,如果讀者朋友有需求,你可以參考Metalink文檔:“Overview of Export and Import in Oracle7”(文檔號:61949.1)。關於EXP/IMP的詳細參數信息你可以通過EXP/IMP HELP=Y來獲得。
另外關於傳輸表空間的更多信息可以參考下面的Metelink文檔,本文不再詳述。
[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use. 
[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace. 
在進行並行EXP/IMP的時候,如果IMP過程建索引的話不建議同時運行5個以上的IMP,如果你想加快速度,可以在IMP的時候不建索引,這樣只要內存允許,可以多跑幾個,然後是SQL腳本創建需要的索引。 


 

   
  //記得加上uses   jpeg   ;  
  //其中有些地方不是太嚴密,回去修改下。。  
  //delphi7+   sql2000通過.可以保存jpeg,jpg,bmp三種格式。  
   
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   StdCtrls,   jpeg,DB,   ADODB,   ExtCtrls,   Buttons,   Grids,   DBGrids,  
      DBCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          ADOConnection1:   TADOConnection;  
          ADOQuery1:   TADOQuery;  
          Button1:   TButton;  
          OpenDialog1:   TOpenDialog;  
          Edit1:   TEdit;  
          Image1:   TImage;  
          Image2:   TImage;  
          BitBtn1:   TBitBtn;  
          DBGrid1:   TDBGrid;  
          DataSource1:   TDataSource;  
          ADOQuery1pic:   TBlobField;  
          ADOQuery1borj:   TStringField;  
          procedure   Button1Click(Sender:   TObject);  
          procedure   BitBtn1Click(Sender:   TObject);  
   
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
      s:string;  
      s1:string;  
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
  bitmap1:tbitmap;  
  pjpg:tjpegimage;  
  pic:TMemoryStream;  
   
  begin  
  pjpg:=tjpegimage.Create;  
  if   opendialog1.Execute  
          then  
            s:=opendialog1.FileName   ;  
            s1:=extractfileext(s);  
                     
            if   (uppercase(s1)   ='.JPG'   )   or   (uppercase(s1)='.JPEG')   //   圖片格式一定要大寫  
                THEN  
                    begin  
                              pjpg.LoadFromFile(s   );  
                              pic:=TMemoryStream.Create;  
                              pjpg.SaveToStream(pic);  
                              image1.Picture.Bitmap.Assign(pjpg);  
   
                              pic.Position:=0;  
                              adoquery1.Insert   ;  
                              adoquery1.FieldByName('borj').VALUE   :=   2;  
                              TBlobField(adoquery1.FieldByName('pic')).LoadFromStream(pic);  
                              adoquery1.post;  
                              pic.Free;  
                              pjpg.free;  
                  end   ;  
   
          if   (uppercase(s1)='.BMP')         then  
   
                        begin  
                              edit1.Text   :=uppercase(s1);  
   
                            image1.Picture.LoadFromFile(s);  
                            adoquery1.Insert   ;  
                            adoquery1.FieldByName('pic').Assign(image1.Picture.Graphic);  
                            adoquery1.FieldByName('borj').VALUE   :=   3;  
   
                            adoquery1.Post   ;  
                      end;  
    end;  
   
      procedure   TForm1.BitBtn1Click(Sender:   TObject);  
   
        var  
          jpeg:tjpegimage;  
              begin  
                image1.Picture.Graphic   :=nil;  
                          with   adoquery1   do  
                                    begin  
                                          if   adoquery1.FieldByName('borj').Value   =3       //   bmp  
                                          then  
                                            image2.Picture.Bitmap.Assign(fieldbyname('pic'))     ;  
   
   
   
                                            if   adoquery1.FieldByName('borj').Value   =2     //jpge;  
   
                                            then  
                                                  begin  
                                                                jpeg:=tjpegimage.Create   ;  
                                                                  try  
                                                                    jpeg.Assign(adoquery1.FieldByName('pic')   );  
                                                                      image2.Picture.Graphic:=jpeg;  
                                                                        finally  
                                                                        jpeg.Free   ;  
                                                                    end;  
                                                  end;  
   
                                    end   ;  
                                     
   
        end;  
   
  end.  
  Top
3 樓yeskybbs(yeksybbs)回覆於 2004-03-28 18:26:54 得分 0
保存圖片會使數據庫變大,訪問變慢  
  所以纔想到要保存路徑,把圖片拷到主機,保存他的路徑Top

4 樓boytomato(深愛一人叫穎的女孩!)回覆於 2004-03-28 18:28:40 得分 0
要是圖片教大,比多的話,只能用路徑存取了。。。  
  

發佈了21 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章