Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Sử dụng bảng bên ngoài Oracle

Các bảng bên ngoài nhận dữ liệu từ các tệp phẳng được lưu trữ bên ngoài cơ sở dữ liệu và cho phép Oracle® truy vấn dữ liệu trong các tệp đó.

Giới thiệu

Oracle có thể phân tích cú pháp bất kỳ định dạng tệp nào được SQL * Loader hỗ trợ. Bạn không thể sử dụng ngôn ngữ điều chế dữ liệu (DML) trên các bảng bên ngoài, nhưng bạn có thể sử dụng DML cho các hoạt động truy vấn, nối và sắp xếp. Bạn cũng có thể tạo các dạng xem và từ đồng nghĩa với các bảng bên ngoài.

Để tận dụng tính năng bảng bên ngoài, bạn nên sử dụng trình điều khiển ORACLE_LOADERaccess và đảm bảo các tệp dữ liệu ở định dạng văn bản. Bạn cũng nên hiểu Ngôn ngữ truy vấn có cấu trúc (SQL) để có thể tạo một bảng bên ngoài và thực hiện các truy vấn dựa trên nó.

Tạo bảng bên ngoài trong cơ sở dữ liệu Oracle

Để tạo các bảng bên ngoài bằng cách sử dụng trình tải Oracle, hãy thực hiện các bước sau:

Tạo thư mục

Sử dụng mã sau để tạo một thư mục trỏ đến vị trí của giá trị được phân tách bằng danh mục (CSV) hoặc các tệp văn bản do người dùng cung cấp.

create directory vk_dir as '/opt/oracle/app/admin/je1prd/mods/151214_CHG0004529';

Tạo bảng bên ngoài

Sử dụng SQL sau để tạo bảng bên ngoài:

create table kumarv5.VK_4529_ext
(
  IBMCU   NCHAR(12),
  IBLITM   NCHAR(25),
  IBANPL   NUMBER
)
organization external
(
   type oracle_loader
   default directory vk_dir
   access parameters
   (
     records delimited by newline
     logfile vk_dir:'VK_4529_ext.log'
     badfile vk_dir:'VK_4529_ext.bad'
     discardfile vk_dir:'VK_4529_ext.dcf'
     skip 1
     fields
     terminated by '~'
     missing field values are null
     reject rows with all null fields
     (
       IBMCU,
       IBLITM,
       IBANPL
     )
   )
   location
   (
     'data14.csv'
   )
)
reject limit unlimited;

Tạo bảng cục bộ

Vì bạn không thể thực hiện DML trên các bảng bên ngoài, hãy sử dụng mã sau để tạo bảng cục bộ dựa trên bảng bên ngoài:

--create
create table kumarv5.VK_4529_int
(
  IBMCU   NCHAR(12),
  IBLITM   NCHAR(25),
  IBANPL   NUMBER
)
tablespace proddtat;

Sao chép dữ liệu từ bên ngoài vào bảng cục bộ

Sử dụng mã sau để sao chép dữ liệu từ bên ngoài vào bảng cục bộ:

--insert
Insert into kumarv5.VK_4529_int   select * from kumarv5.VK_4529_ext;
commit;
select count(*) from kumarv5.VK_4529_int;

Cập nhật bảng sản xuất chính

Sau khi bạn tạo bảng cục bộ dựa trên bảng bên ngoài, bạn có thể sử dụng mã sau để cập nhật bảng sản xuất chính từ bảng cục bộ:

update PRODDTA.F43090 a
    set a.PCMCU='         1AM'
    WHERE (a. IBMCU, a. IBLITM, a. IBANPL) in
       (select b. IBMCU, b. IBLITM, b. IBANPL from kumarv5.VK_4529_int b );

Tải dữ liệu từ các bảng bên ngoài vào bảng thông thường

Hình ảnh sau đây cho bạn thấy cách tải dữ liệu từ bảng bên ngoài vào bảng thông thường:

Sử dụng bảng bên ngoài Oracle

Nguồn hình ảnh :https://dba.fyicenter.com/faq/oracle/Load-Data-from-External-Tables.html

Kết luận

Các bảng bên ngoài cho phép bạn truy cập dữ liệu trong các nguồn bên ngoài như thể nó nằm trong một bảng trong cơ sở dữ liệu. Nếu người dùng cung cấp dữ liệu trong bảng tính hoặc CSVformat và bạn cần cập nhật bảng cơ sở dữ liệu dựa trên trang tính excel, thì bảng bên ngoài rất hữu ích.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể trò chuyện ngay bây giờ để bắt đầu cuộc trò chuyện.

Tìm hiểu thêm về Cơ sở dữ liệu.