今天因為業務需要,運行了EXP的條件匯出,發現WINDOWS和LINUX下有些差別,主要區別在于敏感字元,執行個體如下:
LINUX:
exp us/pass TABLES=\(t_ec_event\) file=/tmp/test.dmp QUERY=\"WHERE eventid =\'40288a2627f491080127fab7f17232b4\'\"
WINDOWS:
exp us/pass@test TABLES=(t_ec_event) file=test.dmp QUERY='WHERE eventid ="40288a2627f491080127fab7f17232b4"'
更多資料如下:
Oracle的exp工具有一個query參數可以指定一個where條件來有條件地匯出記錄, 對於不經常用這個選項的人來說, 經常會遇到這樣的錯誤:
LRM-00112: multiple values not allowed for parameter 'query'
EXP-00019: failed to process parameters, type 'EXP HELP=Y' for help
EXP-00000: Export terminated unsuccessfully
這是因為在where條件中一般都會有空格, 而命令列下就會被釋成幾個命令列參數, 需要用單引號或雙引號將整個where條件括起來, 就可以了. 在Windows下, 如何指定query參數:
exp ... query='where deptno=10'
exp ... query='where deptno=''10'''
exp ... query='where deptno"<"10'
在Solaris(C shell)下, 如何指定query參數:
exp ..... query=\"where col1 \< 1000\"
exp ..... query=\"where col1 \< '1000'\"
其他Unix平台的應當和Solaris下的一樣, 我自已也經常搞錯. 在上面的例子中已經說明了如何在query值中使用單引號, 因此在看完這篇後, 就應當可以寫出正確的where條件了. 最好是寫在一個參數檔案裡, 這樣的話就不用注意這些了.
E:\>exp help=y
通過輸入 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)
ROWS 匯出資料行 (Y)
PARFILE 參數檔案名稱
CONSTRAINTS 匯出限制 (Y)
CONSISTENT 交叉表一致性
LOG 螢幕輸出的記錄檔
STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 匯出觸發器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
FILESIZE 各轉儲檔案的最大尺寸
QUERY 選定匯出表子集的子句
下列關鍵字僅用於可傳輸的資料表空間
TRANSPORT_TABLESPACE 匯出可傳輸的資料表空間中繼資料 (N)
TABLESPACES 將傳輸的資料表空間列表
E:\>imp help=y
可以通過輸入 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)
ANALYZE 執行轉儲檔案中的 ANALYZE 語句 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
TOID_NOVALIDATE 跳過指定類型 id 的校正
FILESIZE 各轉儲檔案的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)
下列關鍵字僅用於可傳輸的資料表空間
TRANSPORT_TABLESPACE 匯入可傳輸的資料表空間中繼資料 (N)
TABLESPACES 將要傳輸到資料庫的資料表空間
DATAFILES 將要傳輸到資料庫的資料檔案
TTS_OWNERS 擁有可傳輸資料表空間集中資料的使用者
參考:http://topic.csdn.net/u/20090828/12/bd99e46b-d024-4073-a32f-c7116f1dea35.html?55665
作者“麥地塢”