轉:EXP 資料庫資料 QUERY 選項使用問題

chenfengwww發表於2010-05-19

問題:我知道在 Oracle8i 中,可以使用 QUERY 有選擇地輸出表資料。我想用 EXP 命令來實現,但沒有成功。下面是我所寫的命令,以及得到的錯誤資訊:

exp ddd/ddd file=/dbf/u11/customer.dmp

tables=AASC.AST_CUSTOMER_KEEP

query='where CUA_TRANS_DTS <

add_months(sysdate, -6)'

table_export[2]: CUA_TRANS_DTS: not found. (沒有找到)

答:作業系統不同,用來指定 QUERY= 引數的方法也不同。 WHERE 語句裡面往往有很多特殊的字元,如 =.>.< 和空格等等。而 UNIX 和 Windows 作業系統中的外殼命令提示是不歡迎這些字元的,這些字元將被忽略。你應該根據不同的作業系統採用不用的方法。我一般使用帶有 QUERY 選項的引數檔案( PARFILE ),利用 PARFILE ,可以不考慮作業系統平臺而使用完全相同的方法。

下面給出一個例子。我用 select * from all_objects 建立了一個表 T ,我希望輸出所有 object_id 小於 5000 的行。在 Windows 中,必須這樣做:

C:exp>exp userid=tkyte/tkyte tables=t

query="""where object_id < 5000"""

注意:在 windows 中,需要在 WHERE 語句的兩端使用三個雙引號。

在 UNIX 中,必須這樣做:

$ exp userid=/ tables=t query="where

object_id < 5000"

exp userid=/ tables=t parfile=exp.par

如果使用包含 query="where object_id < 5000" 的 PARFILE 檔案,我可以在兩個系統中使用相同的一個命令:

exp userid=/ tables=t parfile=exp.par

在兩種作業系統中,完全相同。這相對於在不同的平臺中使用不同的 QUERY 字串容易多了。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22036495/viewspace-1033727/,如需轉載,請註明出處,否則將追究法律責任。

相關文章