Cách trích xuất Quy trình, Chức năng, v.v. Mã nguồn từ Xuất khẩu của Oracle


7

Tôi đã tạo một EXPDAT.DMPtệp của cơ sở dữ liệu Oracle bằng lệnh:

exp userid=usr/pass@db owner=own rows=n compress=n

Sau đó tôi đã chạy lệnh sau để tạo tệp chứa các câu lệnh 'Tạo bảng ...':

imp userid=usr/pass@db full=y indexfile=output.sql

Điều này rất tốt cho các câu lệnh Tạo Bảng, nhưng tôi cũng muốn tạo Quy trình Tạo / Tạo Hàm / Tạo mã nguồn Xem. Tôi có thể thấy chúng ở đó trong tệp .DMP, nhưng tôi chưa tìm được cách giải nén chúng.

Có thể trích xuất thông tin này từ tệp EXPDAT.DMP không? Hoặc tôi sẽ cần phải sử dụng một phương pháp khác?

Mục đích là để có thể xuất nguồn thành các tệp có thể được kiểm soát nguồn.

Câu trả lời:


8

Nếu bạn đã có quyền truy cập vào cơ sở dữ liệu gốc, tôi sẽ sử dụng DBMS_METADATA.GET_DDL.

Bạn có thể viết kịch bản với UTL_FILE để nó đi qua từng đối tượng (từ USER_OBJECTS), sử dụng tên và loại để trích xuất đối tượng sau đó ghi nó vào một tệp có quy ước đặt tên phù hợp.

Nó sẽ sạch hơn rất nhiều so với việc cố gắng tách một tệp duy nhất.


Bạn có thể giới thiệu một ví dụ / hướng dẫn tốt cho DBMS_METADATA.GET_DDL không? Tôi chủ yếu tìm 'spool ... chọn dbms_metadata.get_dll () từ dual; spool off 'thông qua Google. Điều đó có đúng không?
MatthewToday

1
Nơi đầu tiên tôi tìm hướng dẫn là oracle-base.com. oracle-base.com/articles/9i/MetadataAPI.php
Gary


0

Nếu bạn có thể sử dụng tiện ích datapump (expdp, impdp), thay vì xuất khẩu truyền thống, thì lệnh sqlfile có thể được sử dụng.

- Lấy expdp

 expdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT

- bên dưới impdp sẽ không nhập, nó sẽ chỉ tạo tất cả mã đối tượng trong tệp fullcode.sql

impdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT content=metadata_only sqlfile=fullcode.sql
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.