Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Cách Sử Dụng Oracle External Tables Để Truy Cập Dữ Liệu Hiệu Quả

Giới Thiệu

External tables 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 đó.

Oracle có thể phân tích 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ữ thao tác dữ liệu (DML) trên external tables, nhưng bạn có thể dùng DML cho truy vấn, join, và sắp xếp. Bạn cũng có thể tạo views và synonyms đối với external tables.

Để tận dụng tính năng external table, bạn nên dùng access driver ORACLE_LOADER và đảm bảo tệp dữ liệu ở định dạng text. Bạn cũng nên hiểu Structured Query Language (SQL) để tạo external table và thực hiện truy vấn đối với nó.

Tạo External Table Trong Oracle Database

Để tạo external tables bằng Oracle loader, thực hiện các bước sau:

Tạo Thư Mục

Sử dụng mã sau để tạo thư mục trỏ đến vị trí các tệp comma-separated value (CSV) hoặc text do người dùng cung cấp.

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

Tạo External Table

Sử dụng SQL sau để tạo external table:

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 Local Table

Vì bạn không thể thực hiện DML trên external tables, dùng mã sau để tạo local table dựa trên external table:

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

Sao Chép Dữ Liệu Từ External Sang Local Table

Sử dụng mã sau để sao chép dữ liệu từ external sang local table:

--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 tạo local table dựa trên external table, bạn có thể dùng mã sau để cập nhật bảng sản xuất chính từ local table:

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ừ External Tables Sang Regular Tables

Hình sau minh họa cách tải dữ liệu từ external table sang regular table:

Cách Sử Dụng Oracle External Tables Để Truy Cập Dữ Liệu Hiệu Quả

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

Kết Luận

External tables 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 ở định dạng spreadsheet hoặc CSV, và bạn cần cập nhật bảng cơ sở dữ liệu dựa trên file excel, external table rất hữu ích.