External table truy cập dữ liệu từ nguồn ngoại vi như là một bảng trong cơ sở dữ liệu. Bạn có thể kết nối với cơ sở dữ liệu và tạo siêu dữ liệu cho External table bằng cú pháp DDL.
Cú pháp DDL cho một External table gồm hai phần: một phần mô tả các kiểu cột của cơ sở dữ liệu Oracle và một phần mô tả ánh xạ dữ liệu ngoại vi với các cột dữ liệu của cơ sở dữ liệu Oracle.
Một External table không mô tả bất kỳ dữ liệu nào được lưu trữ trong cơ sở dữ liệu. Nó cũng không mô tả cách dữ liệu được lưu trữ trong nguồn ngoại vi.
Thay vào đó, nó mô tả cách lớp External table phải trình bày dữ liệu cho máy chủ. Trách nhiệm của trình điều khiển truy cập và lớp External table là thực hiện các biến đổi cần thiết trên dữ liệu trong tệp ngoại vi sao cho phù hợp với định nghĩa của External table. External table chỉ cho phép đọc; do đó, không thể thực hiện các hoạt động DML và không thể tạo chỉ mục trên chúng.
Có hai trình điều khiển truy cập được sử dụng với External table. Trình điều khiển truy cập ORACLE_LOADER chỉ có thể đọc dữ liệu bảng từ External table và tải nó vào cơ sở dữ liệu. Nó sử dụng tệp văn bản làm nguồn dữ liệu.
Trình điều khiển truy cập ORACLE_DATAPUMP có thể tải dữ liệu bảng từ tệp ngoại vi vào cơ sở dữ liệu và cũng có thể ghi dữ liệu từ cơ sở dữ liệu ra tệp ngoại vi. Nó sử dụng tệp nhị phân làm tệp ngoại vi. Các tệp nhị phân có cùng định dạng như các tệp được sử dụng bởi các tiện ích Data Pump Import và Export và có thể trao đổi với chúng.
Các tệp dữ liệu được tạo cho External table có thể được di chuyển và sử dụng như các tệp dữ liệu cho một External table khác trong cùng cơ sở dữ liệu hoặc cơ sở dữ liệu khác. Dữ liệu ngoại vi có thể được truy vấn và kết hợp trực tiếp song song với các bảng đặt trong cơ sở dữ liệu mà không yêu cầu dữ liệu được tải lên trước.
Bạn có thể chọn để ứng dụng của bạn truy cập trực tiếp vào các External table bằng lệnh SELECT, hoặc bạn có thể chọn để dữ liệu được tải vào trước vào cơ sở dữ liệu đích. Kết quả của một truy vấn phức tạp có thể được ghi vào một tệp ngoại vi bằng cách sử dụng trình điều khiển truy cập ORACLE_DATAPUMP.
Các tệp dữ liệu được điền bởi các External table khác nhau có thể được chỉ định tất cả trong mệnh đề LOCATION của một External table khác. Điều này cung cấp một cách dễ dàng để tổng hợp dữ liệu từ nhiều nguồn. Hạn chế duy nhất là siêu dữ liệu cho tất cả các External table phải hoàn toàn giống nhau.
Hướng dẫn sử dụng External table với SQL Loader trong Oracle Database
Để sử dụng External table với SQL Loader, bạn có thể làm theo các bước sau:
1. Chuẩn bị tệp dữ liệu
Tạo hoặc chuẩn bị tệp dữ liệu mà bạn muốn tải vào External table. Đảm bảo rằng tệp dữ liệu tuân theo định dạng và cấu trúc yêu cầu cho External table.
2. Tạo External table
Sử dụng lệnh CREATE TABLE để tạo External table trong cơ sở dữ liệu Oracle. Trong phần DDL của External table, bạn sẽ chỉ định các kiểu cột và mô tả ánh xạ dữ liệu từ tệp ngoại vi sang cột dữ liệu của External table.
3. Tạo Control file
Tạo một Control file (control file) cho quá trình tải dữ liệu bằng SQL Loader. Control file chứa các chỉ thị và tùy chọn để xác định cách dữ liệu sẽ được đọc và nạp vào External table.
4. Chạy SQL Loader
Mở cửa sổ dòng lệnh hoặc giao diện dòng lệnh của SQL Loader và chạy lệnh để nạp dữ liệu từ tệp vào External table. Sử dụng Control file bạn đã tạo ở bước trước.
Ví dụ về lệnh chạy SQL Loader:
sqlldr username/password@database control=control_file.ctl
Trong đó:
- `username/password`: Tên người dùng và mật khẩu của bạn để kết nối vào cơ sở dữ liệu Oracle.
- `database`: Tên cơ sở dữ liệu Oracle mà bạn muốn sử dụng.
- `control_file.ctl`: Tên Control file bạn đã tạo để xác định quy trình tải dữ liệu.
Lưu ý: Bạn cần thay thế các thông tin như `username`, `password`, `database` và tên Control file thực tế của bạn vào lệnh trên.
Khi quá trình tải dữ liệu hoàn tất, dữ liệu từ tệp sẽ được nạp vào External table và bạn có thể truy vấn và sử dụng nó như bất kỳ bảng nào trong cơ sở dữ liệu Oracle.
Đảm bảo rằng bạn đã nắm vững cú pháp và các tùy chọn cần thiết của SQL Loader và hiểu rõ về cấu trúc và yêu cầu của External table trước khi sử dụng nó để tải dữ liệu.
Dưới đây là một ví dụ cụ thể về việc sử dụng SQL Loader để tải dữ liệu vào một External table:
1. Chuẩn bị tệp dữ liệu:
Giả sử bạn có một tệp văn bản có tên “employees.txt” chứa thông tin về các nhân viên, mỗi dòng trong tệp chứa các trường tương ứng với các cột trong External table “employees_ext”.
2. Tạo External table:
Sử dụng lệnh CREATE TABLE để tạo External table “employees_ext” trong cơ sở dữ liệu Oracle:
CREATE TABLE employees_ext ( employee_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50), hire_date DATE, salary NUMBER ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY data_dir ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ',' ( employee_id, first_name, last_name, hire_date CHAR(10) DATE MASK "yyyy-mm-dd", salary ) ) LOCATION ('employees.txt') );
3. Tạo Control file:
Tạo một Control file “control_file.ctl” để xác định cách dữ liệu sẽ được nạp vào External table. Nội dung của Control file có thể là như sau:
LOAD DATA INFILE 'employees.txt' APPEND INTO TABLE employees_ext FIELDS TERMINATED BY "," ( employee_id, first_name, last_name, hire_date CHAR(10) "YYYY-MM-DD", salary )
4. Chạy SQL Loader:
Mở cửa sổ dòng lệnh hoặc giao diện dòng lệnh của SQL Loader và chạy lệnh để nạp dữ liệu từ tệp vào External table:
sqlldr username/password@database control=control_file.ctl
Lưu ý: Hãy chắc chắn thay thế “username/password” bằng tên người dùng và mật khẩu của bạn để kết nối vào cơ sở dữ liệu Oracle, và thay thế “database” bằng tên cơ sở dữ liệu mà bạn muốn sử dụng.
Sau khi lệnh SQL Loader hoàn thành, dữ liệu từ tệp “employees.txt” sẽ được nạp vào External table “employees_ext”. Bây giờ bạn có thể truy vấn và sử dụng dữ liệu từ External table này như một bảng bình thường trong cơ sở dữ liệu Oracle.