Tabel eksternal adalah salah satu fitur penting di oracle , kita akan menjelajahi tabel eksternal di oracle dengan contoh di postingan ini
Apa itu TABEL EKSTERNAL di Oracle?
1) Tabel eksternal adalah tabel yang hanya dapat dibaca di mana data disimpan dalam file datar di luar database
2) Anda dapat menggunakan fitur tabel eksternal untuk mengakses file eksternal seolah-olah itu adalah tabel di dalam database.
3) Saat membuat tabel eksternal, Anda menentukan struktur dan lokasinya dengan di oracle. Pada dasarnya Anda hanya menyimpan metadata di dalam oracle
4) Saat Anda membuat kueri tabel, Oracle membaca tabel eksternal dan mengembalikan hasilnya seolah-olah data telah disimpan dalam database.
5) Server oracle menyediakan dua driver oracle utama untuk membaca file datar
- Oracle_loader:Ini digunakan untuk membaca file datar menggunakan teknologi oracle loader. Ini pada dasarnya memungkinkan untuk membaca file yang dapat ditafsirkan menggunakan teknologi pemuat SQL
- Oracle_datapump:Ini digunakan untuk mengimpor dan mengekspor data menggunakan format independen platform
MENGAKSES DATA TABEL EKSTERNAL
Ada beberapa langkah yang perlu dilakukan untuk mengakses tabel eksternal
- Pertama-tama kita harus menggunakan perintah create directory untuk mendefinisikan objek direktori yang menunjuk ke lokasi file eksternal
sqlplus "/ as sysdba"Buat direktori ext_dir sebagai ‘/export/home/ora/external’;
- Pengguna yang akan mengakses file eksternal harus memiliki hak baca dan tulis di direktori.
Berikan semua pada direktori ext_dir kepada pengguna;
- Sekarang mari kita membuat atau meletakkan beberapa file di bawah direktori
SQL> Conn user/userSQL> Spool city.lstSQL> Pilih kota || ',' || negara bagian || ',' || negara dari negara;SQL> Spool off
Sekarang Anda seharusnya dapat melihat file city.lst di direktori
- Sekarang kita harus membuat tabel eksternal menggunakan perintah di bawah ini
Buat tabel city_ext(city varchar(10),state varchar(14),country varchar(13))Organization external ( ketik oracle_loaderDefault directory ext_dirAccess parameter( record dipisahkan oleh newlineFields diakhiri dengan “,"( city char(10), state char(14),country char(13)))Location ('city.lst'))PARALLEL 5REJECT LIMIT UNLIMITED;
Penjelasan setiap istilah
Organisasi eksternal | Ini memberitahu bahwa data disimpan di luar database |
Ketik | Ini adalah driver oracle atau API yang menafsirkan data eksternal untuk database. Jika Anda tidak menentukan apa pun, maka oracle_loader adalah defaultnya |
Direktori default | Ini adalah lokasi direktori tempat file datar dapat disimpan. Direktori default juga digunakan untuk menyimpan file bantu yang dibuat dari akses driver oracle seperti file log dan file buruk. Kami Dapat menentukan beberapa direktori untuk memfasilitasi penyeimbangan beban pada beberapa drive |
Parameter akses | Ini memungkinkan Anda menentukan nilai parameter dari driver akses khusus untuk tabel eksternal ini |
Lokasi | Ini memungkinkan Anda menentukan nama file datar eksternal |
BATAS TOLAK | Ini memungkinkan Anda menentukan berapa banyak kesalahan konversi yang dapat terjadi sebelum server oracle membatalkan operasi dan mengembalikan kesalahan |
5) MEMILIH DATA DARI TABEL EKSTERNAL
SQL> pilih * dari city_ext;
Ini akan dibaca dari city.lst yang merupakan file level sistem operasi.
Jika file city.lst tidak ada, pernyataan pilih akan memunculkan kesalahan ini
SELECT **ERROR pada baris 1:ORA-29913:kesalahan dalam menjalankan ODCIEXTTABLEOPEN calloutORA-29400:kesalahan kartrid dataKUP-04040:file city.lst di EXT_DIR tidak ditemukanORA-06512:pada "SYS.ORACLE_LOADER", baris 14ORA- 06512:pada baris 1
BATASAN PADA TABEL EKSTERNAL
- Anda tidak dapat melakukan operasi penyisipan, pembaruan, dan penghapusan
- Pengindeksan Oracle tidak dapat dilakukan
- Pembatasan tidak dimungkinkan
MANFAAT TABEL EKSTERNAL DI ORACLE
- a) Kueri tabel eksternal diselesaikan dengan sangat cepat meskipun id pemindaian tabel lengkap diperlukan untuk setiap akses
- b) Anda dapat menggabungkan tabel eksternal satu sama lain atau ke tabel oracle standar
- c) Kita dapat membuat tampilan pada tabel eksternal
Pembaruan Baru di 11gR2 untuk Tabel Eksternal
Dengan Oracle 11g Release 2, klausa PREPROCESSOR baru diperkenalkan yang dapat mengidentifikasi objek direktori dan skrip yang digunakan untuk memproses file sebelum dibaca oleh tabel eksternal. Fitur ini telah di-backport ke 11gR1 (11.1.0.7).
Klausa PREPROCESSOR sangat berguna untuk membaca file terkompresi, karena file tersebut dibuka ritsletingnya dan disalurkan langsung ke proses tabel eksternal tanpa harus membuka ritsletingnya pada sistem file.
Mari kita ambil contoh untuk lebih memahami parameter ini.
Misalkan city.list dikompres, maka nama filenya adalah city.list.Z
Buat tabel city_ext(city varchar(10),state varchar(14),country varchar(13))Organization external ( ketik oracle_loaderDefault directory ext_dirPREPROCESSOR ext_dir:uncompressAccess parameter( record dipisahkan oleh newlineFields diakhiri dengan “,"( city char( 10), state char(14),country char(13)))Location ('city.lst.Z'))PARALLEL 5REJECT LIMIT UNLIMITED;
Di sini klausa PREPROCESSOR pertama-tama akan membuka kompres file city.lst.Z menggunakan perintah uncompress sebelum mencari data. Semua akan terjadi dengan cepat dan Anda tidak perlu membuka kompresi file city.lst.Z
Membongkar/Memuat data menggunakan tabel Eksternal Oracle
Oracle juga menyediakan dukungan untuk teknologi datapump di tabel eksternal.
Kita dapat membongkar tabel menggunakan driver akses oracle_datadump
BUAT TABEL country_xtORGANIZATION EXTERNAL(TYPE ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION ('countries.dmp'))AS SELECT * FROM countries;
Ini akan membuat country.dmp di direktori. Sekarang bahkan tabel negara dihapus, kita masih dapat melihat data menggunakan tabel countries_xt.
Kita bahkan dapat mengambil file dump ke database lain dan kemudian membuat tabel eksternal untuk melihat datanya
BUAT TABEL negara_xt (kota VARCHAR2(10),negara bagian VARCHAR2(9),negara VARCHAR2(9))ORGANISASI EKSTERNAL (TYPE ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION ('> negara);Pilih * dari negara.dmpPeningkatan dalam tabel Eksternal di database 12c
Oracle_loader
Klausa lokasi dapat memiliki karakter liar. * singkatan dari beberapa karakter dan ? untuk satu karakter.
Klausa csv bidang telah diperkenalkan
Oracle_datapump
Kami dapat membongkar data menggunakan opsi kompresi lanjutan
Artikel terkait
ORA-29913 dengan tabel eksternal
Tips tentang tabel eksternal
Cara memuat bidang CLOB dengan tabel eksternal
Oracle buat tabel sebagai pilihan