PLSQL’den excel dosyası olusturmak

PLSQL’den excel dosyası oluşturmak.

Bu makalede bir excel dosya create edip, sorgu sonucunu excel dosyasına yazdıracağız..(csv ; comma separated)
Bunun için öncelikle bir oracle directory oluşturup, kullanıcımıza bu directory için yetki vermemiz gerekiyor..(mevcut directory’lerden biri de kullanılabilir, ben yeni oluşturmayı tercih ettim)

REPORT_DIR adında yeni oracle directory oluşturalım;(SYS ile)

SQL> CREATE OR REPLACE DIRECTORY REPORT_DIR AS 'C:\ORACLE\REPORTS';

Mevcut oracle directory’leri;(SYS ile)

SQL> SELECT * FROM dba_directories;

HR userına bu directory için yetki verelim..(SYS ile)

SQL> GRANT READ,WRITE,EXECUTE ON DIRECTORY REPORT_DIR TO HR;

Şimdi excel’e yazdıracağımız sql’i yazalım, örnek için basit bir sql yazalım..(HR ile)
Aşağıdaki sql’in sonucunu REPORT_DIR dizininde excel dosyası olarak oluşturalım..

SQL> SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL FROM EMPLOYEES;

Excelimizi oluşturacak procedurü create edelim..(HR ile)

CREATE OR REPLACE PROCEDURE export_report_to_excel IS
CURSOR c_emp IS
SELECT employee_id,first_name,last_name,email
FROM employees;
wfile_handle utl_file.file_type;
v_wstring VARCHAR2(100);
v_header VARCHAR2(100);
v_file VARCHAR2(100);
BEGIN
v_header :='emp no'||';'||'first name'||';'||'last name'||';'||'email';
v_file :=to_char(SYSDATE,'DD-MM-YYYY')||'report.csv';
wfile_handle := utl_file.fopen('REPORT_DIR',v_file,'W');
utl_file.put_line(wfile_handle,v_header);
FOR i IN c_emp LOOP
v_wstring := i.employee_id||';'||i.first_name||';'||i.last_name||';'||i.email;
utl_file.put_line(wfile_handle,v_wstring);
END LOOP;
utl_file.fclose (wfile_handle);
END export_report_to_excel;

Şimdi de procedürümüzü çalıştıralım. İsterseniz bu procedürü job’a bağlayarak belirli aralıklarla çalıştırıp otomatikleştirebilirsiniz.

SQL> EXEC export_report_to_excel();

REPORT_DIR dizinine gidip dosyamıza bakalım.Dosyanın adı to_char(SYSDATE,’DD-MM-YYYY’)||’report.csv’ formatında olacaktır,eğer aynı isimde dosya varsa onu yeni dosyayla ezecektir.
REPORT_DIR Dizininde 17-06-2014report.csv adında dosya oluşmuş durumda..

plsqlden excele veri atmak

plsqlden excele veri export etmek

Umarım faydalı olur..

Tagged: , , , , , , ,

Comments: 3

  1. Nevzat 24 Temmuz 2014 at 23:17 Reply

    Ömer bey öncelikle çok teşekkürler.

    Herkes için çok yararlı ve açıklayıcı olmuş tüm anlattıklarınız. Türkçe döküm bulmak zor bulunanlarda bu denli açıklayıcı ve konuya hakim değiller.
    Özellikle oracle kurulumu ile birlikte gelen veri tabanı üzerinden örneklendirme yapmanız örneğin denenmesi ve geliştirilmesi için büyük olanak.

    Bir sonraki konu veri tabanındaki tablolara txt dosyalarında bulunan çok sayıda veriyi prosedür ile kolayca istenilen şekilde aktarmayı anlatırsanız sevinirim.

    hem böylece Plsql String Fonksiyonlarını vb şeylerin kullanımını okuyucular daha rahat anlayabilir.

    Yazılarınızın devamını bekliyorum.

  2. omeracar 30 Temmuz 2014 at 03:52 Reply

    Nevzat Bey teşekkür ederim, faydalı oluyorsa ne mutlu bana..

    Dış ortamdan (excel,csv,txt) veri almak için external table kullanılır.
    Aşağıdaki makalede basit bir örneğim var, ama mantık tamamen aynı.
    Sadece veri dosyamız düzenli olsun yeter.

    http://omeracar.com.tr/external-table-okuma-yazma/

  3. ramazan 28 Eylül 2018 at 15:04 Reply

    Merhaba ,

    Sheet Sheet yazdırma varmıdır acaba?
    Her Sheet için ayrı bir soruyla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir