1. Utwórz obiekt katalogu, w którym będziesz pisać plik CSV.
-- dla systemów Windows utwórz w następujący sposób zmień folder podświetlony w kataloguCREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\temp' /-- dla systemów Unix/Linux utwórz w następujący sposób
CREATE OR REPLACE DIRECTORY CSVDIR AS '/temp/' /Uwaga:Zmień lokalizację folderu na lokalizację katalogu, np. c:\abc lub /abc/.
2. Utwórz procedurę bazy danych w schemacie Scott lub jeśli tworzysz w innym schemacie, upewnij się, że masz tabelę Emp w tym schemacie, w przeciwnym razie musisz zmienić kursor i odniesienia do pól dla dowolnej innej tabeli.
CREATE OR REPLACE PROCEDURE export_to_csv
IS
v_file UTL_FILE.file_type;
v_string VARCHAR2 (4000);
CURSOR c_emp
IS
SELECT empno,
ename,
deptno,
sal,
comm
FROM emp;
BEGIN
v_file :=
UTL_FILE.fopen ('CSVDIR',
'empdata.csv',
'w',
1000);
-- if you do not want heading then remove below two lines
v_string := 'Emp Code, Emp Name, Dept, Salary, Commission';
UTL_FILE.put_line (v_file, v_string);
FOR cur IN c_emp
LOOP
v_string :=
cur.empno
|| ','
|| cur.ename
|| ','
|| cur.deptno
|| ','
|| cur.sal
|| ','
|| cur.comm;
UTL_FILE.put_line (v_file, v_string);
END LOOP;
UTL_FILE.fclose (v_file);
EXCEPTION
WHEN OTHERS
THEN
IF UTL_FILE.is_open (v_file)
THEN
UTL_FILE.fclose (v_file);
END IF;
END; 3. Teraz uruchom procedurę w następujący sposób:
BEGIN export_to_csv; END;Możesz teraz sprawdzić katalog określony w poleceniu Utwórz katalog, czy plik empdata.csv musi istnieć z danymi tabeli. Stworzyłem narzędzie, które generuje procedurę online, wypróbuj:
- Generuj procedurę PL/SQL online, aby wyeksportować dane z tabeli

-
Oracle - Dlaczego powinienem używać pakietów zamiast samodzielnych procedur lub funkcji?
-
Różnica między klauzulami ON i WHERE w złączeniach tabel SQL
-
Oracle:unikatowość selektywna indeksu na podstawie funkcji
-
Spring's Stored Procedure - wyniki powracające z procedury są zawsze puste
-
2 sposoby na uzyskanie dnia z randki w Oracle