Rabu, 11 Mei 2011

Memasukkan FILE ke table ORACLE dengan type data BLOB

Alhamdulillah setelah "bergalau ria" semalaman gara-gara BLOB, akhirnya bisa juga memasukkan data ke dalam tabel yang terdapat tipe data BLOB... Terimakasih buat miss_odong2 yang sudah membuat penulis terpaksa belajar untuk meng-insert data blob. Ini gara-gara penulis sudah bilang YA untuk membantunya mencari cara menginsert data blob...(salah saya bilang "YA", lain kali harus lebih hati2...:D)

Data yang akan dimasukkan dapat bertipe apapun misalkan data gambar, data video, maupun data2 lainnya... untuk memasukkan datanya akan dibuat procedure yang akan menangani insert data dari directory di komputer kedalam kolom database. Gimana ya caranya??? 

yuk dibaca dengan tenang lebih enak klo ada camilan asal bukan permen(ntar kayak miss_odong2... diminta bawa makanan ditawarinnya permen...:D) dan jangan lupa langsung praktekan biar lengket diingatan...:D
Yuk dimulai,,,

1. Kita bikin dulu table yang memiliki type data BLOB,

create table simpan_gambar(
nama varchar2(30), --untuk nama file
gambar BLOB);

2. Kita atur directory tempat meletakkan data yang akan dimasukkan.

Buat directory di oracle yang di link ke directory yang ada di OS atau PC(gampangnya klo pake OS windos, direktori yang ada pada windows explorer...) misal pada contoh ini menggunakan direktori "d:\cobablob". syntaxnya :

create or replace directory tempblob as 'd:\cobablob';


ket : - tempblob merupakan direktori yang dibuat di oracle...(bingung??? udw diterima saja...:D)

Untuk membuat direktori ini harus menggunakan user yang memiliki privilage dba_directories atau all_directories(klo bingung, gunakan saja user system...:D). Direktori ini biasanya dibuat untuk external tables(cari sendiri ya definisinya, tanya mbah google...).

Setelah itu, kalau kita menggunakan user lain yang mengurusi tabel yang mau dimasukkan datanya kita atur dulu privilagenya, syntaxnya :

grant read, write on directory tempblob to coba;

*misal dengan user coba

3. Kita buat  procedure untuk menangani insert data

CREATE OR REPLACE PROCEDURE File2tabelBlob(
namadir varchar2, namafile varchar2) IS
dFile BFILE;
isi BLOB;
ukuran BINARY_INTEGER;
Begin
dFile:=bfilename(namadir,namafile);
insert into simpan_gambar(nama, gambar)
values(namafile,EMPTY_BLOB())
RETURNING gambar into isi;
dbms_lob.fileopen(dFile,dbms_lob.file_readonly);
ukuran:=dbms_lob.getlength(dFile);
dbms_lob.loadfromfile(isi,dFile,ukuran);
Update simpan_gambar set gambar=isi where nama=namafile;
dbms_lob.fileclose(dFile);
end File2tabelBlob;
/

4. Kita eksekusi procedure yang telah dibuat sebelumnya...

exec File2tabelBlob('TEMPBLOB','miss_odong2.jpg');


jika terdapat tulisan "PL/SQL procedure successfully completed." maka prosedure berhasil di eksekusi dan data gambar miss_odong2.jpg sudah masuk ke table.

Untuk melihatnya jangan gunakan sintak Select biasa pada sqlplus tidak akan bisa jika yang tipe BLOB juga mo dikeluarkan, silahkan dicoba kalau tidak percaya...:D. Untuk melihat data masuk atau tidak coba buka pakai Navicat atau yang lainnya. Walaupun isi data BLOB tidak tampil minimal kita bisa tahu bahwa datanya sudah masuk. seperti dibawah ini :


Demikian sedikit hal yang dapat saya share semoga bisa bermanfaat...

14 komentar:

  1. duh, ikhlas ga ni kak?? kok ada "terpaksa belajar", jadi ga enak

    yah yah...
    apaan miss_odong2??
    catet ya kak, nama di akte tu farida nuzulia, main ganti aja
    hehe, tapi makasih ya kak ilmunya, sering" aja, heeeeee..

    BalasHapus
  2. G mungkin klo bilang "pasti ikhlas", yang bisa saya bilang "saya akan berusaha ikhlas"
    bagus kan miss_odong2,lebih terkenal,,,:D

    gara2 ini saya jadi penasaran make BLOB, awas ya...

    BalasHapus
  3. yeee dasar kak alip... ada miss_cilacap, ada miss_odong2, ga konsisten ni... dibilangin jangan asal ganti nama orang juga, heeeee...
    katanya udah bisa cara nampilin gambarnya, di-posting juga lah kak...
    makasih banyak ya kaaaaakk

    BalasHapus
  4. ini gara2 blogspot error nie... jadi ada yang lupa tidak diedit... sekarang udah di edit kok lihat saja tuh, konsisten...:D
    iya ntar diusahakan diposting, untuk yang video bantuin buat ya...

    BalasHapus
  5. waaw kilat ya balesnya
    yaaah, jangan pake nama begitu kenapa kak
    tapi kalo yang video itu, bukan dari database,
    gimana kalo kakak yang posting juga, haha......

    BalasHapus
  6. yang video bukan dari database??? gmn maksudnya?

    BalasHapus
  7. yaa maksudnya cuma nampilin video dari direktori tertentu aja yang udah ditentuin, haha,
    ni tapi ada software yang bisa nampilin video streaming dari web cam, baru mau dicobain si, he..

    oya kak, tau ga cara nyambungin aplikasi ke database yang servernya beda (aplikasi dan database beda komputer)

    BalasHapus
  8. bisa pake IP... yang pas OCIconnect tambahkan IP

    BalasHapus
  9. g usah dibuat susah mendingan videonya simpan di DB lalu tampilin... atau yang tadi akses saja dari directory...

    tapi klo mo lebih bagus ya terserah saja...

    BalasHapus
  10. @Danta : Sip,
    hmmm... udw lama g buka blog, ternyata ini to yg dibaca...

    BalasHapus
  11. untuk pengeksekusian, file yang ingin kita inputkan kita letakan dimana? makasih.. kalo yang mas inputkan, miss odong2, mis odong2.jpg itu mas simpen dimana sebelum di inputkan, apakah ada folder tertentu?

    BalasHapus
  12. Maaf baru sempat bales...
    nah untuk filenya letakan saya letakan di d:\cobablob

    Coba baca bagian 2

    BalasHapus
  13. info dong, sumber penulis apa ya? untuk bahan belajar saya.trimakasih

    BalasHapus

Jangan lupa tinggalkan komentar anda, baik berupa koreksi, kritikan maupun saran...