SQL * Loader là cách yêu thích của tôi để tải hàng loạt khối lượng dữ liệu lớn vào Oracle. Sử dụng tùy chọn chèn đường dẫn trực tiếp để có tốc độ tối đa nhưng phải hiểu tác động của tải đường dẫn trực tiếp (ví dụ:tất cả dữ liệu được chèn qua vạch nước cao, điều này sẽ tốt nếu bạn cắt bớt bảng của mình). Nó thậm chí còn có một dung sai cho các hàng xấu, vì vậy nếu dữ liệu của bạn có "một số" lỗi, nó vẫn có thể hoạt động.
SQL * Loader có thể tạm dừng các chỉ mục và xây dựng tất cả chúng ở cuối, điều này làm cho việc chèn hàng loạt rất nhanh.
Ví dụ về lệnh gọi SQL * Loader:
$SQLDIR/sqlldr /@MyDatabase direct=false silent=feedback \
control=mydata.ctl log=/apps/logs/mydata.log bad=/apps/logs/mydata.bad \
rows=200000
Và mydata.ctl sẽ trông giống như sau:
LOAD DATA
INFILE '/apps/load_files/mytable.dat'
INTO TABLE my_schema.my_able
FIELDS TERMINATED BY "|"
(ORDER_ID,
ORDER_DATE,
PART_NUMBER,
QUANTITY)
Ngoài ra ... nếu bạn chỉ đang sao chép toàn bộ nội dung của bảng này sang bảng khác, trên các cơ sở dữ liệu, bạn có thể thực hiện việc này nếu DBA của bạn thiết lập DBlink (quy trình 30 giây), giả sử DB của bạn được thiết lập với không gian làm lại để hoàn thành điều này.
truncate table my_schema.my_table;
insert into my_schema.my_table
select * from [email protected]_remote_db;
Việc sử dụng /* +append */
gợi ý vẫn có thể sử dụng chèn đường dẫn trực tiếp.