NT及Unix 下exp 時候子查詢寫法

tolywang發表於2006-04-29

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

摘自

問題:我知道在 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 字串容易多了。


__________________
qwerqwe

本文地址:
原文出處:http://www.itpub.net/221227.html

============================================

For example, if user scott wants to export only those employees whose job title is salesman and whose salary is less than 1600, he could do the following (this example is UNIX-based):

exp scott/tiger TABLES=emp QUERY="WHERE job='SALESMAN' and sal<1600"


Note:

Because the value of the QUERY parameter contains blanks, most operating systems require that the entire strings WHERE job='salesman' and sal<1600 be placed in double quotation marks or marked as a literal by some method. Operating system reserved characters also need to be preceded by an escape character. See your operating system-specific documentation for information about special and reserved characters on your system.


When executing this query, Export builds a SQL SELECT statement similar to the following:

SELECT * FROM emp WHERE job='salesman' and sal <1600; 

例子(WINNT上執行透過):

exp system/system QUERY="WHERE b_id>=1 and b_id<1000" buffer=8192 tables=usr1.buget_t feedback=50 consistent=n compress=n filesize=2G log=buget_log file=(buget_1, buget_2)

QUERY

Default: none

This parameter allows you to select a subset of rows from a set of tables when doing a table mode export. The value of the query parameter is a string that contains a WHERE clause for a SQL SELECT statement that will be applied to all tables (or table partitions) listed in the TABLE parameter.

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

相關文章