SQLLOADER ile metin belgelerini oracle veritabanına atma
Oracle içerisinde bulunan SQLLOADER ile metin bazlı bilgilerimizi yani bir txt, doc veya excel file(csv commadelimited formatında veya txt file a atılmış) içerisinde bulunan verilerimizi veritabanımıza kolayca aktarabiliriz. SqlLoader, kontrol dosyası denilen bir ayar tanım dosyası eşliğinde, virgül ayırımlı, boşluk ayırımlı, tab ayırımlı, ya da sabit uzunluktaki kolonlar içeren metinlerin hepsini veri tabanına yükleyebilir.
Aşağıdaki örnekte, Personelin PERSONEL_ID, ADI, SOYADI, BÖLÜMÜ, EMAİL´i bilgilerini içeren bir text dosyasının veritabanına nasıl import edileceğini göreceğiz. ( Örnekte kullanılan metin dosyası ektedir,dosyayı bilgisayarınıza indiriniz.)
Öncelikle Metin dosyası verilerinin yükleneceği table create edilir:
SQL> create table personel (personel_id number(7) not null, ad varchar2(10) not null, soyad varchar2(15), bolum_ad varchar2(15), email varchar2(25));
Sqlloader ın çalışması için personel tablosunun bilgilerinin bulunduğu bir control dosyası create etmemiz gerekiyor.Bir txt file açarak içerisine aşağıdaki kodu yazıp load.ctl olarak kaydedelim. LOAD DATA INFILE ´F:/programlar/oracleversion/sqlloader/impersonel.txt´ INTO TABLE personel (personel_id POSITION(01:07) INTEGER EXTERNAL, ad POSITION(08:20) CHAR, soyad POSITION(21:31) CHAR, bolum_ad POSITION(32:47) CHAR, email POSITION(48:65) CHAR )
Burada infile ile metin dosyamız;into ile aktarım yapmak için create ettiğimiz table;POSITION(?:?) ile, değerlerin satırdaki başlangıç ve bitiş noktaları belirlenmiştir.
Sabit uzunlukların bulunduğu veri dosyaları için position kullanılırken ,değişken uzunluklu , farklı ayıraçlar kullanılmış bir veri dosyasında ise control dosyası ayarı farklıdır.Ekteki metin dosyasının sabit uzunluk değilde verilerin arasının virgülle ayrıldığını düşünürsek control dosyasımızın aşağıdaki gibi olması gerekir:
LOAD DATA INFILE ´F:/programlar/oracleversion/sqlloader/impersonel.txt´ INTO TABLE personel FIELD TERMINATED BY ´,´ OPTIONALLY ENCLOSED BY ´ " ´ (personel_id,ad,soyad,bolum_ad,email)
Son olarak cmd dan aşağıdaki komutu çalıştırıp bimpersonel.txt tablosundaki verileri veritabanımızdaki personel tablosuna yükleyelim: C:>sqlldr hr/hr control=F:/programlar/oracleversion/sqlloader/load.ctl log=F:/programlar/oracleversion/sqlloader/persloader.log bad=F:/programlar/oracleversion/sqlloader/load.bad discard=F:F:/programlar/oracleversion/sqlloader/load.dis
SQL*Loader: Release 10.2.0.1.0 - Production on Cum Ara 22 10:45:19 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Islem noktasına ulasıldı - mantiksal kayit sayisi 4 Islem noktasına ulasıldı - mantiksal kayit sayisi 5 İşlem başarıyla gerçekleşmiştir.Sql den aşağıdaki şekilde personel tablomuzun içeriğine bakıp verilerimizi artık burdan takip edebiliriz. SQL> conn hr/hr Baland². SQL> select * from personel;
PERSONEL_ID AD SOYAD BOLUM_AD EMAIL ----------- ---------- --------------- --------------- ---------------------
1 b³¦ra kara veritaban² dkara@mail.com 2 seda k÷se donan²m skose@mail.com 142 devran berrak donan²m dberrak@mail.com 75896 esin hazan sistem ehazan@mail.com 45867 banu sadiolu yaz²l²m bsadioglu@mail.com
bimpersonel.txt
|