Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Bảng bên ngoài Oracle

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

  1. 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
  2. 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

  1. Bạn không thể thực hiện các thao tác chèn, cập nhật và xóa
  2. Không thể lập chỉ mục Oracle
  3. 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

  1. 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
  2. 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
  3. 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cú pháp kết hợp bên ngoài kiểu cũ Oracle - Tại sao lại định vị dấu (+) ở bên phải của dấu bằng trong phép nối bên ngoài bên trái?

  2. 2 cách trả về hàng chỉ chứa các ký tự không phải chữ và số trong Oracle

  3. Làm thế nào để tìm các phụ thuộc bên trong một gói oracle?

  4. Oracle xóa các hàng khỏi nhiều bảng

  5. ORA-30926:không thể có được tập hợp hàng ổn định trong bảng nguồn khi Hợp nhất bảng