2008-08-26 21 views
3

Ben Oracle çalıştırıyorum ve bazı sonuçları veritabanından çeken bir sorguya sahibim. Sonuçları bir metin dosyası olarak yazmak istiyorum. Bunu yapmak için nasıl giderim?Oracle Dosyaya yaz

Tercih ettiğim yol UTL_FILE kullanılarak yapılmış olabilir. Bazılarının bunun nasıl yapılacağına dair bir örneği var mı? Eğer makara komutunu kullanabilirsiniz Sqlplus gelen sorguyu çalıştırıyorsanız

cevap

3

Eğer PL/SQL kullanıyorsanız, UTL_FILE paketini kullanabilirsiniz, sql + spool kullanmanın farkı, dosyaların sunucu dosya sistemine yazılmasıdır. UTL_FILE bir takım sınırlamalara sahiptir, bu yüzden sunucu tarafında bir alternatif Java saklı yordamları kullanmak olacaktır.

1

: Bir oturum içindeki makara komut yürüttükten sonra

 
spool /tmp/test.spool 

, tüm çıkış yanı sıra SQLplus konsola gönderilir /tmp/test.spool metin dosyası.

 
SQL> spool c:\temp\out.txt 
SQL> SELECT * FROM USERS; 
SQL> spool off 

Bu üç cümle çıktı sorgunun sonucu dosyası c "KULLANICILAR" SELECT * FROM olacaktır: \ temp \ dışarı Sql Plus'ı kullanıyorsanız olarak

2

, kadar kolaydır. Txt.

Bu sorguyu, Oracle'ın dize işleme işlevleri kullanılarak biçimlendirebilirsiniz.

0

Bu adla bir dizin yolu haritalama kolaylığı için dizin oluşturun birlikte birkaç basit örnekler UTL_FILE example

2

Kullanım UTL_FILE ile makul bir öğretici gibi görünüyor (gerçek dizini için sadece bir başvuru yaratmaz o kadar

örnek) ilk oluşturulduğundan emin


    create directory logfile as 'd:\logfile'; -- must have priv to do this 

declare 
    vFile utl_file.file_type; 
begin 
    vFile := utl_file.fopen(logfile ,'syslog','w'); -- w is write. This returns file handle 
    utl_file.put(vFile,'Start Logfile'); -- note use of file handle vFile 
    utl_file.fclose(vFile); -- note use of file handle vFile 
end;