Bảng ngoài là một trong những tính năng quan trọng trong oracle, chúng ta sẽ khám phá bảng ngoài trong oracle với ví dụ trong bài đăng này
BẢNG BÊN NGOÀI trong Oracle là gì?
1) Bảng bên ngoài là bảng chỉ đọc trong đó dữ liệu được lưu trữ trong các tệp phẳng bên ngoài cơ sở dữ liệu
2) Bạn có thể sử dụng tính năng bảng bên ngoài để truy cập các tệp bên ngoài như thể chúng là các bảng bên trong cơ sở dữ liệu.
3) Khi bạn tạo một bảng bên ngoài, bạn xác định cấu trúc và vị trí của nó với trong oracle. Về cơ bản, bạn chỉ cần lưu trữ siêu dữ liệu bên trong oracle
4) Khi bạn truy vấn bảng, oracle đọc bảng bên ngoài và trả về kết quả giống như thể dữ liệu đã được lưu trữ trong cơ sở dữ liệu.
5) Máy chủ oracle cung cấp hai trình điều khiển oracle chính để đọc các tệp phẳng
- Oracle_loader:Công cụ này được sử dụng để đọc các tệp phẳng bằng công nghệ trình tải oracle. Về cơ bản, nó cho phép đọc các tệp có thể được thông dịch bằng công nghệ trình tải SQL
- Oracle_datapump:Điều này được sử dụng để nhập và xuất dữ liệu bằng định dạng độc lập với nền tảng
TRUY CẬP DỮ LIỆU BẢNG BÊN NGOÀI
Cần thực hiện một số bước để truy cập vào bảng bên ngoài
- Trước tiên, chúng ta phải sử dụng lệnh tạo thư mục để xác định một đối tượng thư mục trỏ đến vị trí tệp bên ngoài
sqlplus "/ as sysdba" Create directory ext_dir as ‘/export/home/ora/external’;
- Người dùng sẽ truy cập các tệp bên ngoài phải có đặc quyền đọc và ghi trên thư mục.
Grant all on directory ext_dir to user;
- Bây giờ, hãy để chúng tôi tạo hoặc đặt một số tệp trong thư mục
SQL> Conn user/user SQL> Spool city.lst SQL> Select city || ‘,’ || state || ‘,’ || country from countries; SQL> Spool off
Bây giờ bạn sẽ có thể thấy tệp city.lst trong thư mục
- Bây giờ chúng ta nên tạo bảng bên ngoài bằng lệnh dưới đây
Create table city_ext (city varchar(10), state varchar(14), country varchar(13)) Organization external ( type oracle_loader Default directory ext_dir Access parameters ( records delimited by newline Fields terminated by “,” ( city char(10), state char(14), country char(13))) Location (‘city.lst’)) PARALLEL 5 REJECT LIMIT UNLIMITED;
Giải thích từng thuật ngữ
Tổ chức bên ngoài | Nó cho biết rằng dữ liệu được lưu trữ bên ngoài cơ sở dữ liệu |
Loại | Đây là trình điều khiển oracle hoặc API diễn giải dữ liệu bên ngoài cho cơ sở dữ liệu. Nếu bạn không chỉ định bất kỳ điều gì thì oracle_loader là mặc định |
Thư mục mặc định | Đây là vị trí thư mục nơi các tệp phẳng có thể được lưu trữ. Thư mục mặc định cũng được sử dụng để lưu trữ các tệp phụ trợ được tạo ra từ quyền truy cập của trình điều khiển oracle như tệp nhật ký và tệp xấu. Chúng tôi có thể chỉ định nhiều thư mục để tạo điều kiện cân bằng tải trên nhiều ổ đĩa |
Tham số truy cập | Nó cho phép bạn chỉ định các giá trị của tham số của trình điều khiển truy cập cụ thể cho bảng bên ngoài này |
Vị trí | Nó cho phép bạn chỉ định tên tệp phẳng bên ngoài |
GIỚI HẠN TỪ CHỐI | Nó cho phép bạn chỉ định bao nhiêu lỗi chuyển đổi có thể xảy ra trước khi máy chủ oracle hủy hoạt động và trả lại lỗi |
5) CHỌN DỮ LIỆU TỪ BẢNG BÊN NGOÀI
SQL> chọn * từ city_ext;
Điều này sẽ đọc từ city.lst, một tệp cấp hệ điều hành.
Nếu tệp city.lst không có, câu lệnh select sẽ gây ra lỗi này
SELECT * * ERROR at line 1: ORA-29913: error in executing ODCIEXTTABLEOPEN callout ORA-29400: data cartridge error KUP-04040: file city.lst in EXT_DIR not found ORA-06512: at "SYS.ORACLE_LOADER", line 14 ORA-06512: at line 1
CÁC GIỚI HẠN TRÊN BẢNG BÊN NGOÀI
- Bạn không thể thực hiện các thao tác chèn, cập nhật và xóa
- Không thể lập chỉ mục Oracle
- Ràng buộc không thể thực hiện được
LỢI ÍCH CỦA BẢNG BÊN NGOÀI TRONG ORACLE
- a) Các truy vấn của các bảng bên ngoài hoàn thành rất nhanh mặc dù cần có id quét toàn bảng với mỗi lần truy cập
- b) Bạn có thể nối các bảng bên ngoài với nhau hoặc với các bảng tiên tri tiêu chuẩn
- c) Chúng ta có thể tạo các khung nhìn trên bảng bên ngoài
Cập nhật mới trong 11gR2 cho Bảng bên ngoài
Với Oracle 11g Release 2, mệnh đề PREPROCESSOR mới được giới thiệu có thể xác định đối tượng thư mục và tập lệnh được sử dụng để xử lý tệp trước khi chúng được đọc bởi bảng bên ngoài. Tính năng này đã được báo cáo lại thành 11gR1 (11.1.0.7).
Mệnh đề PREPROCESSOR đặc biệt hữu ích để đọc các tệp nén, vì chúng được giải nén và đưa thẳng vào quy trình bảng bên ngoài mà không cần phải giải nén trên hệ thống tệp.
Hãy để chúng tôi lấy một ví dụ để hiểu rõ hơn về thông số này.
Giả sử city.list được nén, khi đó tên tệp sẽ là city.list.Z
Create table city_ext (city varchar(10), state varchar(14), country varchar(13)) Organization external ( type oracle_loader Default directory ext_dir PREPROCESSOR ext_dir:uncompress Access parameters ( records delimited by newline Fields terminated by “,” ( city char(10), state char(14), country char(13))) Location (‘city.lst.Z’)) PARALLEL 5 REJECT LIMIT UNLIMITED;
Ở đây, mệnh đề PREPROCESSOR trước tiên sẽ giải nén tệp city.lst.Z bằng cách sử dụng lệnh uncompress trước khi tìm kiếm dữ liệu. Tất cả sẽ diễn ra nhanh chóng và bạn sẽ không cần phải giải nén tệp city.lst.Z
Dỡ / Tải dữ liệu bằng bảng bên ngoài Oracle
Oracle cũng cung cấp hỗ trợ cho công nghệ datapump trong bảng bên ngoài.
Chúng tôi có thể dỡ bảng bằng trình điều khiển truy cập oracle_datadump
CREATE TABLE countries_xt ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY ext_dir LOCATION ('countries.dmp') ) AS SELECT * FROM countries;
Thao tác này sẽ tạo ra các country.dmp trong thư mục. Giờ đây, ngay cả các quốc gia trong bảng đã bị loại bỏ, chúng tôi vẫn có thể xem dữ liệu bằng cách sử dụng bảng country_xt.
Chúng tôi thậm chí có thể đưa tệp kết xuất đến một cơ sở dữ liệu khác và sau đó tạo bảng bên ngoài để xem dữ liệu
CREATE TABLE countries_xt ( city VARCHAR2(10), state VARCHAR2(9), countries VARCHAR2(9)) ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY ext_dir LOCATION ('countries.dmp ') ); Select * from countries_xt;
Các cải tiến trong bảng Bên ngoài trong cơ sở dữ liệu 12c
Oracle_loader
Mệnh đề vị trí có thể có ký tự hoang dã. * là viết tắt của nhiều ký tự và? cho một ký tự.
Mệnh đề csv trường đã được giới thiệu
Oracle_datapump
Chúng tôi có thể dỡ bỏ dữ liệu bằng cách sử dụng tùy chọn nén nâng cao
Các bài viết có liên quan
ORA-29913 với bảng bên ngoài
Mẹo về bảng bên ngoài
Cách tải trường CLOB với bảng bên ngoài
oracle tạo bảng khi được chọn