Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:mengekspor tabel dengan gumpalan ke file .sql yang dapat diimpor lagi

Saya tidak berpikir ini mungkin dengan SQL Developer (tapi kemudian saya tidak sering menggunakannya).

Klien SQL yang saya gunakan - SQL Workbench/J - dapat melakukan ini.

Ada beberapa cara untuk mengekspor data ini.

Buat skrip berpemilik

Itu dapat membuat skrip SQL yang menggunakan notasi khusus (khusus alat) untuk mereferensikan file eksternal, seperti:

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

Pernyataan di atas hanya dapat dieksekusi dengan SQL Workbench lagi. Ini tidak kompatibel dengan klien SQL lainnya.

Gunakan utl_raw

Alternatif lain adalah menggunakan "blob literal", tetapi karena Oracle membatasi 4000 byte untuk literal karakter, ini hanya berfungsi untuk benar-benar nilai gumpalan kecil:

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

di mana literal karakter untuk cast_to_raw panggilan akan berisi nilai hex dari BLOB. Karena ini membutuhkan 2 karakter per "gumpalan byte", Anda tidak dapat menangani Gumpalan yang lebih besar dari 2000 byte dengan itu. Tapi sintaks itu akan bekerja untuk hampir semua alat Oracle SQL (jika mereka dapat menangani skrip dengan garis yang sangat panjang).

File input SQL*Loader

Alternatif ketiga adalah mengekspor data ke dalam file teks yang dapat diimpor menggunakan SQL*Loader:

File teks akan berisi sesuatu seperti ini:

NAME DATAfoobar blob_r1_c2.data

Bersama dengan file kontrol SQL*Loader berikut:

OPTIONS (skip=1)LOAD DATA CHARACTERSET 'WE8ISO8859P15'INFILE 'images.txt'APPENDINTO TABLE IMAGESFIELDS DIHENTIKAN OLEH '\t' TRAILING NULLCOLS( NAME, lob_file_data FILLER, DATA LOBFILE) TERMINFATE_file EO(lob_file) EO_file(lob_file)> 

Ini dapat dimuat menggunakan SQL*Loader dan karenanya tidak memerlukan SQL Workbench untuk mengimpor data.

Detail lebih lanjut ada di manual

Sunting

Seperti yang ditunjukkan Alex dalam komentarnya, Anda juga dapat menggunakan ekspor DataPump - tetapi itu mengharuskan Anda memiliki akses ke sistem file di server. Semua solusi di atas menyimpan data di klien.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ORA-30004 saat menggunakan fungsi SYS_CONNECT_BY_PATH,

  2. Apa sintaks URL JDBC yang benar jika dompet Oracle digunakan?

  3. Menggunakan Alias ​​​​dalam klausa WHERE

  4. Peringatan Waktu Menunggu Basis Data EM12c

  5. Cara Menjalankan Create Table DDL Dengan EXECUTE IMMEDIATE Di Oracle Database