Home / MAKALELER / Veri Tabanı / External Table

External Table

External Table

Amacımız sadece veri okumaksa ve milyonlarca satırlık veriyi database’e import etmek için onlarca dk beklemektense External Table kullanıp bu işi saniyeler içinde halledebilriz.

External tablolarda ki veriler  veritabanındaki tablolar gibi fiziksel olarak datafile üzerinde tutulmaz.Veriler database’de değil sunucu üzerindeki dizinlerde .csv yada .txt uzantılı dosyalarda saklanır. External table sunucu üzerindeki dosyaları veritabanında okumamıza olanak sağlar.

 

Extarnal table daki verilerde değişiklik yapılamaz sadece veri okuma işlemi (select) yapılabilir. İnsert , update ,delete  , truncate  gibi  DML işlemleri yapamayız. Veride değişiklik yapmak istiyorsak sunucu üzerindeki dosya üzerinde değişiklik yapmamız gerekir. Ama  bu tabloları kullanan view oluşturabilir yada başka tablolarla join edip sorgu yazabiliriz. Ek olarak index create edemeyiz ve de partition da oluşturamayız.
Şimdi External table nasıl oluşturlur ona bakalım :
Öncelikle veritabanında bir dizin oluşturmamız gerekiyor. Bu dizin sunucu  üzerinde veriyi okuyacağımız ilgili .csv yada txt gibi dosyaları sakladığımız lokasyonu belirtir. Dizini oluşturduktan sonra ilgili kullanıcıya EXECUTE, READ, WRITE hakkı veriririz.
DROP DIRECTORY TMP;
CREATE OR REPLACE DIRECTORY
TMP AS
‘/orabkp/yedek’;
GRANT EXECUTE, READ, WRITE ON DIRECTORY TMP TO TEMP_USER WITH GRANT OPTION;
Oluşturduğumuz dizini görmek için  aşağıdaki sql’i çalıştırmamız yeterlidir.
select * from  dba_directories;
Artık harici tablomuzu oluşturabilriz.
Excelmizde ki veriler örnek olarak aşağıdaki formatta olsun.
İSİM
SOYİSİM
TAKIM
EMRE
KILINÇ
GALATASARAY
ARİF
ÜNAL
GALATASARAY
HARUN
KIŞCU
GALATASARAY
MUSTAFA
DİKMEN
GALATASARAY
YUSUF
ORHAN
GALATASARAY
NECATİ
ÖZGEN
FENERBAHÇE
CİHAN
ÖZTÜRK
GALATASARAY
FERDİ
VAROL
FENERBAHÇE
….
……..
………
Yukardaki verilere uygun 3 kolonlu External tablomuzu oluşturyoruz.delimitir olarak ‘;’ kullanıldığını varsayıyoruz.Sunucu üzerinde  orabkp/yedek dizini altında ‘EXT_TARAFTAR’ adlı dosyamıza ait tablomu aşağıdaki şekilde oluşturuyoruz.
CREATE TABLE TEMP_USER. EXT_TARAFTAR(
  isim     VARCHAR2(20 BYTE),
  soyisim     VARCHAR2(20 BYTE),
  takim   VARCHAR2(20 BYTE),
)
ORGANIZATION EXTERNAL
  (  TYPE ORACLE_LOADER
     DEFAULT DIRECTORY TMP
     ACCESS PARAMETERS
       ( records delimited by newline
    fields terminated by ‘;’
             )
     LOCATION (EXT:’EXT_TARAFTAR’)
  )
REJECT LIMIT UNLIMITED
PARALLEL ( DEGREE 5 INSTANCES 1 )
NOMONITORING;
Artık harici tablomuza sorgu çekebilir yada burdaki verileri alıp baska tablolara insert edip istediğimiz DML komutunu çalıştırabilirz.
Insert into taraftar (ad,soyad, takim)
 Select * from TEMP_USER. EXT_TARAFTAR
İyi çalışmalar….

About Yunus Emre Kilinc

Mersin Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra Ankara'da yaşamaya başladım. Şu anda Fatih Üniversitesinde İşletme yüksek Lisansı(MBA) na devam etmekteyim. 2010 yılında Oracle DBA eğitimi aldım. OCA 11gR2 sertifikasına sahibim. 2009 yılından beri Türk Telekom A.Ş de xDSL teknolojileri alanında çalışmaktayım. Oracle veritabanı yönetimi konularında kendimi geliştirmeye çalışmaktayım. İlgilendiğim ve kullandığım teknolojiler : Oracle SQL , PL/SQL Oracle 11g , Oracle 10g , UNIX (Sun Solaris), UNIX (HP-UX) ,OSI Model , IP ,DSL ,Unix Shell Scripting

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın