Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
V rámci tejto úlohy v Oracle 9i neexistuje žiadna „syntax“ v rámci Pure SQL alebo PL/SQL. Tento prístup zahŕňa niekoľko krokov:
1. Externý postup: Vytvoríte uloženú procedúru (v PL/SQL), ktorý volá externý postup napísaný v jazyku, ako je Java alebo C. Tento externý postup bude spracovať skutočný súbor I/O (otváranie, čítanie a zatvorenie súboru).
2. java alebo c kód: Externý postup (napr. Trieda Java alebo funkcia C) použije príslušné API operačného systému (napríklad `fopen`,` fread`, `fclose` v C alebo Java's` FileInputStream` a súvisiace triedy) na prečítanie obsahu textového súboru.
3. pl/sql obal: Funkcia Wrapper PL/SQL zavolá externý postup, zvládne akékoľvek chyby a vráti obsah súboru ako reťazec (alebo možno ako „Clob`, ak je súbor veľmi veľký).
Koncepčný príklad (ilustratívne - vyžaduje významné kódovanie):
Toto je * náčrt na vysokej úrovni * a nepredstavuje zostavený kód; Iba načrtáva tento koncept:
`` sql
- PL/SQL Wrapper
Vytvorte alebo nahradiť postup get_file_content (
p_filepath vo varchar2,
p_file_contents out Clob
)
Externý postup get_file_contents_java (p_filepath varchar2, p_file_contents clob); -Java ekvivalent
Začať
get_file_contents_java (p_filelepath, p_file_contents);
Výnimka
Keď potom ostatní
Dbms_output.put_line ('Súbor na čítanie chýb:' || SQLERRM);
Koniec;
/
- Použitie príkladu (po zostavovaní kódu Java a jeho registrácii v Oracle)
Deklarovať
v_file_contents Clob;
Začať
get_file_contents ('/path/to/my/file.txt', v_file_contents);
Dbms_output.put_line (v_file_contents); - Vytlačte obsah súboru (skrátený, ak je veľmi veľký)
Koniec;
/
`` `
Dôležité úvahy:
* Java/C kód: Budete musieť napísať a zostaviť skutočný kód Java alebo C, ktorý vykoná súbor I/O. Tento kód by sa potom musel načítať do databázy Oracle pomocou príslušného `loadJava` (pre Java) alebo podobných príkazov.
* Povolenia: Užívateľ Oracle Database potrebuje vhodné povolenia operačného systému na prístup k adresáru a súboru.
* Zabezpečenie: Buďte mimoriadne opatrní, aby ste databáze umožnili prístup k ľubovoľným súborom v systéme súborov v dôsledku významných bezpečnostných rizík. Obmedzte prístup k konkrétnym dôveryhodným miestam.
* Manipulácia s chybami: Robustné spracovanie chýb je v externom postupe rozhodujúce a obal PL/SQL na správu potenciálnych výnimiek (súbor sa nenašiel, problémy s povolením atď.).
* veľké súbory: Pre veľmi veľké súbory je používanie `Clob` vhodnejšie ako` varchar2`, aby sa predišlo obmedzeniam veľkosti.
Z dôvodu komplexnosti to nie je triviálna úloha v Oracle 9i. Moderné verzie databázy často ponúkajú efektívnejšie metódy (napríklad UTL_File, aj keď aj to má obavy o bezpečnosť a povolenie), ale Oracle 9i vyžaduje tento viac zapojený prístup k externému postupu. Pri umožňovaní prístupu k databáze k súborom operačného systému vždy uprednostňujte bezpečnosť.