2012-08-06 32 views
6

Tôi có một bãi chứa một cơ sở dữ liệu oracle khổng lồ nên không thể nhập tất cả. Tôi muốn nhập một bảng cụ thể gọi là X. Vấn đề là X có khóa ngoại. Nếu tôi nhập khẩu chỉ X, tôi sẽ nhận được lỗi sau:Nhập các bảng cụ thể từ tệp kết xuất oracle?

imp user/[email protected] tables=X rows=y ignore=Y 
ORA-02291: integrity constraint violated - parent key not found 

Tôi đã có toàn bộ db tại địa phương (nhưng không có dữ liệu), tôi muốn nhập khẩu tất cả các bảng có liên quan đến X. Làm thế nào tôi có thể đạt được điều đó ? Tôi đã cài đặt plsql. Tôi cũng cần phải biết thứ tự của các bảng này để biết nên nhập vào bảng nào lúc đầu.

Trả lời

1

Có vài câu hỏi vì vậy tôi sẽ cố gắng trả lời từng người một.

ORA-02291: integrity constraint violated - parent key not found 

Không có trí tuệ để đoán này vì như bạn đã biết bạn không có kỷ lục mẹ cho bảng X. Bởi theo cách bạn cũng có thể muốn sử dụng cờ CONSTRAINTS=N vì bạn đã có db như bạn nói.

"Tôi muốn nhập tất cả các bảng được liên kết với X. Làm thế nào tôi có thể đạt được điều đó?"

Cũng không có tùy chọn nào khác ngoài việc tìm tất cả các phụ thuộc theo cách thủ công (hoặc sử dụng bảng từ điển dữ liệu user_cons_columns, user_constraints vv để tra cứu) và nhập các bảng đó. Hãy nghĩ về nó nếu bạn không làm điều đó. Bạn sẽ phá vỡ tính toàn vẹn dữ liệu của bạn. Nếu bạn vẫn muốn dữ liệu đó trong bảng X mà không có các phụ thuộc thì hãy vô hiệu hóa các ràng buộc và sau đó nhập khẩu. Nhưng bạn sẽ không kích hoạt lại ràng buộc của bạn và tôi không biết bạn muốn làm gì với dữ liệu bị hỏng.

"Tôi cũng cần phải biết thứ tự của các bảng này để biết nên nhập vào bảng nào trước."

Tắt các ràng buộc trước khi nhập và sau đó bật chúng sau khi nhập. Bạn không phải lo lắng về trật tự trong trường hợp đó.

Các vấn đề liên quan