Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Aká je syntax, ktorá sa dá použiť na získanie textového súboru z adresára pomocou Oracle 9i?

Oracle 9i nemá vstavanú funkciu na priame čítanie súborov zo súborového systému operačného systému, ako by ste mohli robiť s Pythonom `` `funkciami alebo podobnými príkazmi v iných jazykoch. Na dosiahnutie tohto cieľa musíte použiť externé postupy (zvyčajne napísané v obaloch PL/SQL okolo iných jazykov, ako je Java alebo C).

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

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené