Tem
27
2017

URL uzantısındaki Dosyanın FND_LOBS a kaydedilmesi

Merhaba,

Bu yazımda URL uzantısı üzerinde bulunan dosyanın fnd_lobs tablosuna kaydedilmesi üzerinedir.

Örnek bir URL tuik sitesi üzerinden yayınlanan tefe tüfe bilgilerinin linki

 
http://tuik.gov.tr/PreIstatistikTablo.DO?istab_id=650

gibidir. Link üzerinde http post işlemi ile .xls uzantılı bir dosya lokal makinaya indirilmektedir.

Aşağıdaki script ile bu dosya blob olarak okunarak fnd_lobs a nasıl kaydedildiği ile ilgili örnek bir scripttir.

 
DECLARE
   l_media_id        PLS_INTEGER;
   l_http_request    UTL_HTTP.req;
   l_http_response   UTL_HTTP.resp;
   l_blob            BLOB;
   l_raw             RAW (32767);
BEGIN
   DBMS_LOB.createtemporary (l_blob, FALSE);
 
   l_http_request :=
      UTL_HTTP.begin_request
                     ('http://tuik.gov.tr/PreIstatistikTablo.do?istab_id=650');
   l_http_response := UTL_HTTP.get_response (l_http_request);
 
 
   BEGIN
      LOOP
         UTL_HTTP.read_raw (l_http_response, l_raw, 32767);
         DBMS_LOB.writeappend (l_blob, UTL_RAW.LENGTH (l_raw), l_raw);
      END LOOP;
   EXCEPTION
      WHEN UTL_HTTP.end_of_body
      THEN
         UTL_HTTP.end_response (l_http_response);
   END;
 
   SELECT fnd_lobs_s.NEXTVAL
     INTO l_media_id
     FROM DUAL;
 
   INSERT INTO fnd_lobs
               (file_id, file_name, file_content_type, upload_date,
                expiration_date, program_name, program_tag, file_data,
                LANGUAGE, oracle_charset, file_format
               )
        VALUES (l_media_id, 'tufe.xls', 'application/vnd.ms-excel', SYSDATE,
                NULL, 'FNDATTCH', NULL, EMPTY_BLOB (),
                'US', 'UTF8', 'BINARY'
               );
 
   UPDATE fnd_lobs
      SET file_data = l_blob
    WHERE 1 = 1 AND file_id = l_media_id;
 
   DBMS_LOB.freetemporary (l_blob);
   DBMS_OUTPUT.put_line (' file_id : ' || l_media_id);
   COMMIT;
END;

Mustafa Korkmaz

Oracle Applications Developer at Partnera
2005 yılında Dokuz Eylül Üniversitesi Endüstri Mühendisliğinden Mezun
Oldu, 2011 Yılında Ahmet Yesevi Üniversitesi Bilgisayar Mühendisliğinde
Yüksek Lisansını Tamamlandı,2012 Yılında Doğuş Üniversitesinde Bilgisayar
Mühendisliği Doktora Eğitimine Başladı.10 yılı aşkın bir zamandır Oracle
Ürünleri Uygulama Yazılım Uzmanı Olarak profesyonel kariyerine devam
etmektedir. İlgi alanları Middleware, CI/CD,
Oracle Database , PL/SQL , Java , Makine Öğrenmesi ve Veri Madenciliği alanlarındadır.
2 versiyon Oracle Database ' (10g, 11g) inde OCA(Oracle Certificate Associate) ve
PL/SQL Certificated Professional ünvanları bulunmaktadır.
Mail: mustafakorkmz@gmail.com
Mustafa Korkmaz


Yorum yapın

*