2009-03-26 3 views
6

Tôi có toàn bộ DB sẽ được nhập dưới dạng kết xuất vào của riêng mình. Tôi muốn loại trừ dữ liệu ra khỏi các bảng nhất định (chủ yếu là do chúng có kích thước lớn và không hữu ích). Tôi không thể loại trừ hoàn toàn các bảng đó vì tôi cần đối tượng bảng (trừ dữ liệu) và sẽ phải tạo lại chúng trong lược đồ của tôi nếu tôi làm như vậy. Ngoài ra trong trường hợp không có các đối tượng bảng đó, các ràng buộc nước ngoài khác được xác định trên các bảng khác cũng sẽ không được nhập và sẽ cần phải được định nghĩa lại. Do đó, tôi chỉ cần loại trừ dữ liệu từ một số bảng nhất định. .Nhập dữ liệu chọn lọc bằng cách sử dụng impdp

Có một tập hợp các tham số cho impdp có thể giúp tôi làm như vậy không?

Trả lời

8

Chắc chắn thực hiện 2 lần chạy. Một để tạo ra tất cả các đối tượng bảng, nhưng thay vì sử dụng các bảng trong thời gian impdp thứ hai, sử dụng loại trừ

impdp ... Content=data_only exclude=TABLE:"IN ('table1', 'table2')" 

Một cách khác hoạt động, nhưng cách này bạn chỉ cần liệt kê các bảng bạn không muốn so tất cả những gì bạn muốn.

9

tôi sẽ làm hai chạy vào nó: Đầu tiên tôi sẽ nhập khẩu chỉ siêu dữ liệu:

impdp ... CONTENT=METADATA_ONLY

Thứ hai sẽ bao gồm các dữ liệu chỉ dành cho các bảng tôi đã quan tâm đến:

impdp ... CONTENT=DATA_ONLY TABLES=table1,table2...

1

Cú pháp:

EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] 
INCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] 

Ví dụ về các nhà điều hành sử dụng:

EXCLUDE=SEQUENCE 
or EXCLUDE=TABLE:"IN ('EMP','DEPT')" 
or EXCLUDE=INDEX:"= 'MY_INDX'" 
or INCLUDE=PROCEDURE:"LIKE 'MY_PROC_%'" 
or INCLUDE=TABLE:"> 'E'" 

Các tham số cũng có thể được lưu trữ trong một tập tin tham số, ví dụ: exp.par

DIRECTORY = my_dir 
DUMPFILE = exp_tab.dmp 
LOGFILE = exp_tab.log 
SCHEMAS = scott 
INCLUDE = TABLE:"IN ('EMP', 'DEPT')" 
1

Nếu kích thước của bảng lớn để nhập khẩu, bạn có thể sử dụng tham số "SAMPLE" trong lệnh expdp để ta ke xuất bảng cho phần trăm bạn muốn ....

$ expdp tables=T100test DIRECTORY=expimp1 DUMPFILE=test12.dmp SAMPLE = 10; 

Lệnh này sẽ chỉ xuất 10% dữ liệu của bảng T100test.