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

Oracle:xuất một bảng có các đốm màu sang tệp .sql có thể được nhập lại

Tôi không nghĩ rằng điều này là khả thi với SQL Developer (nhưng sau đó tôi không sử dụng nó thường xuyên).

Máy khách SQL mà tôi đang sử dụng - SQL Workbench / J - có thể thực hiện việc này.

Có một số cách để xuất dữ liệu này.

Tạo tập lệnh độc quyền

Nó có thể tạo một tập lệnh SQL sử dụng ký hiệu đặc biệt (cụ thể cho công cụ) để tham chiếu đến một tệp bên ngoài, chẳng hạn như:

 INSERT INTO images
  (name, data)
VALUES
  ('foobar', {$blobfile='blob_r1_c2.data'});
 

Câu lệnh trên chỉ có thể được thực thi lại với SQL Workbench. Nó không tương thích với bất kỳ ứng dụng khách SQL nào khác.

Sử dụng utl_raw

Một giải pháp thay thế khác là sử dụng "blob Lite", nhưng do giới hạn của Oracle về 4000 byte cho một ký tự, điều này chỉ hoạt động đối với thực sự giá trị đốm màu nhỏ:

 INSERT INTO images
  (name, data)
VALUES
  ('foobar', to_blob(utl_raw.cast_to_raw('......')));
 

trong đó ký tự chữ cho cast_to_raw lệnh gọi sẽ chứa các giá trị hex của BLOB. Vì điều này yêu cầu 2 ký tự cho mỗi "byte đốm màu", bạn không thể xử lý BLOB lớn hơn 2000 byte với điều đó. Nhưng cú pháp đó sẽ hoạt động đối với gần như tất cả các công cụ SQL của Oracle (nếu chúng có thể xử lý các tập lệnh có dòng rất dài).

Tệp đầu vào SQL * Loader

Giải pháp thay thế thứ ba là xuất dữ liệu thành tệp văn bản có thể được nhập bằng SQL * Loader:

Tệp văn bản sẽ chứa một cái gì đó như thế này:

 TÊN DATAfoobar blob_r1_c2.data 

Cùng với tệp điều khiển SQL * Loader sau:

 TÙY CHỌN (bỏ qua =1) TẢI NHÂN VẬT DỮ LIỆU 'WE8ISO8859P15'INFILE' images.txt'APPENDINTO TABLE IMAGESFIELDS ĐƯỢC CHỨNG NHẬN BỞI '\ t' TRAILING NULLCOLS (TÊN, lob_file_data FILLER, DỮ LIỆU LOBFIEDLE (lob_ERM_data)> 

Điều này có thể được tải bằng SQL * Loader và do đó không cần SQL Workbench để nhập dữ liệu.

Thông tin chi tiết có trong sách hướng dẫn

Chỉnh sửa

Như Alex đã chỉ ra trong nhận xét của mình, bạn cũng có thể sử dụng xuất DataPump - nhưng điều đó yêu cầu bạn phải có quyền truy cập vào hệ thống tệp trên máy chủ. Các giải pháp trên đều lưu trữ dữ liệu trên máy khách.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016 trên Linux

  2. Oracle’s Containers cho J2EE (OC4J) trong R12

  3. Làm thế nào để Chèn một Tập tin trong Cơ sở dữ liệu Oracle?

  4. cách khôi phục cơ sở dữ liệu dự phòng từ nhật ký lưu trữ bị thiếu

  5. Chuyển đổi hàng mới sang XML bên trong Trình kích hoạt Oracle