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

Oracle cách tải ảnh vào cột blob bằng sqlldr

Tôi thường sử dụng một cách khác để tải dữ liệu BLOB bằng SQL * Loader. Về cơ bản, tôi nhập một tệp văn bản có chứa tên tệp và trong tệp điều khiển, sau đó tôi nói với SQL * Loader rằng nội dung thực sự đến từ một tệp lob.

Trong trường hợp của bạn, điều này có nghĩa là bạn sẽ cần tạo tệp văn bản chứa (chỉ) tên tệp của jpg. Sau đó, tệp điều khiển sẽ trông giống như sau:

LOAD DATA
infile data.txt
TRUNCATE
INTO TABLE per_images
FIELDS TERMINATED BY ',' TRAILING NULLCOLS
(
  input_file FILLER,
  image_id "PER_IMAGES_s.nextval",  
  parent_id constant 6598,
  table_name constant "PER_PEOPLE_F",  
  image lobfile(input_file) terminated by eof
)

Tệp đầu vào data.txt sau đó sẽ giống như sau:

0211664.jpg

Điều quan trọng là image lobfile ... là phần cuối và bất kỳ định nghĩa hằng số nào đều xuất hiện đầu tiên trong tệp điều khiển.

Sử dụng loại phương pháp này có vẻ đơn giản hơn nhiều đối với tôi vì bạn không cần biết kích thước của tệp đầu vào và bạn có thể tải nhiều hơn một hình ảnh bằng cách chạy SQL * Loader, điều này có lẽ nhanh hơn rất nhiều nếu bạn cần tải một số lượng lớn hình ảnh.

Nếu bạn muốn tải nhiều ảnh, tệp đầu vào cần phải chứa các giá trị không đổi mà bạn đã cung cấp cho đến nay bên trong tệp điều khiển. Lấy tệp đầu vào sau:

6598,PER_PEOPLE_F,0211664.jpg
6599,PER_PEOPLE_F,0123456.jpg
6600,PER_PEOPLE_X,0987654.jpg

Sau đó, bạn có thể tải cả ba ảnh bằng một tệp điều khiển duy nhất:

LOAD DATA
infile data.txt
TRUNCATE
INTO TABLE per_images
FIELDS TERMINATED BY ',' TRAILING NULLCOLS
(
  parent_id,
  table_name,
  input_file FILLER,
  image_id "PER_IMAGES_s.nextval",  
  image lobfile(input_file) terminated by eof
)

Tệp điều khiển sẽ không bao giờ thay đổi, chỉ nội dung của data.txt tệp.

Tệp điều khiển ban đầu của bạn phù hợp với tôi, nếu raw(9529) bị xóa hoàn toàn:

options (bindsize 9529)
load data
infile 0211664.jpg "fix 9529"
append
into table PER_IMAGES
(
  image,
  parent_id constant 6598,
  table_name constant "PER_PEOPLE_F",
  image_id "PER_IMAGES_s.nextval"
)



  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ách kiểm tra kết nối của cassandra với bộ tích hợp dữ liệu pentaho

  2. Sự khác biệt giữa VARCHAR2 (10 CHAR) và NVARCHAR2 (10)

  3. Sao chép ORACLE_HOME

  4. ORA - 00933 nhầm lẫn với tham gia bên trong và như

  5. Tôi tiếp tục gặp lỗi trong quy trình của mình giúp thêm khóa học mới và tôi đã đưa các yêu cầu vào phần mô tả