Etiket arşivi: oracledan excele export

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..