konto usunięte

Temat: Procedura archiwizaji plików - oracle

Hej
macie może jakiś przykład procedury pakowania plików płaskich "wyplutych" wcześniej do odpowiedniej lokalizacji na serwerze. Mam juz cos takiego ale wali komunikatem, "koniec pliku w kanale komunikacyjnym"

CREATE OR REPLACE procedure LGETL.z_lgetl_zip
is
kml UTL_FILE.FILE_TYPE;
kmz UTL_FILE.FILE_TYPE;
strbufferdd raw(4000);
begin
kml:=UTL_FILE.FOPEN('LGETL_DIR','z_20101021.txt','R',32767);
utl_file.get_raw(kml, strbufferdd,9999999);
strbufferdd:=UTL_COMPRESS.lz_compress (strbufferdd,6);
kmz:=UTL_FILE.FOPEN('LGETL_DIR','z_20101021.zip','w',32767);
Utl_File.Put_Raw (kmz,strbufferdd );
utl_file.fclose(kml);
utl_file.fclose(kmz);
end;
/

Temat: Procedura archiwizaji plików - oracle

Ja to robię w troszkę inny sposób:
1) robię java source
create or replace and compile java source named j_oscommand as
import java.io.*;
public class J_OSCommand
{
public static String Run(String Command)
{
try
{
Runtime.getRuntime().exec(Command);
return("0");
}
catch (Exception e)
{
System.out.println("Error running command: " + Command + "\n" + e.getMessage());
return(e.getMessage());
}
}
}

2) następnie funkcja uruchamiająca:
CREATE OR REPLACE FUNCTION F_OSCommand_Run(Command IN STRING) RETURN VARCHAR2 IS
LANGUAGE JAVA NAME 'J_OSCommand.Run(java.lang.String) return int';

3) i już mogę korzystać ze wszystkich zewnętrznych 'pakerów', które są na serwerze oraclowym :)
np. gzip -> wynik := F_OSCommand_Run('gzip '||dir||'/'||nazwa_pliku);
4) co więcej mogę odpalić sobie dowolny command z poziomu oracla! ha!
5) pamietaj o uprawnieniach!Wojciech T. edytował(a) ten post dnia 28.10.10 o godzinie 09:06

Następna dyskusja:

Procedura tworzenia tabeli ...




Wyślij zaproszenie do