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


Yorum yapın

*