Dowiedz się, jak używać UTL_FILE pakiet do eksportu danych z tabeli do pliku CSV w Oracle PL/SQL.
W Oracle pakiet UTL_FILE zawiera wiele procedur i funkcji do pisania pliku tekstowego. Poniżej znajdują się szczegóły składni i niezbędne kroki, aby zapisać plik:
Składnia i kroki, aby zapisać plik przy użyciu UTL_FILE
-- Declare a variable to store file type
n_file UTL_FILE.FILE_TYPE;
-- Open the file in Begin section, it will open the file and return the file handle into the variable n_file
n_file := UTL_FILE.FOPEN('DIR_OBJ', 'YourCSVFileName.csv', 'w', 4000);
-- Write a single or multiple lines
UTL_FILE.PUT_LINE(n_file, 'abc, xyz, xxx');
-- Close the file
UTL_FILE.FCLOSE(n_file); Przykład podstawowy
Declare
n_file Utl_File.File_Type;
Begin
-- The directory object MY_DIR must be exist or create a new one
n_file := Utl_File.Fopen('MY_DIR', 'myfile.csv', 'w', '4000');
Utl_File.Put_Line(n_file, 'First line.');
Utl_File.Put_Line(n_file, 'Second line.');
Utl_File.Put_Line(n_file, 'Third line.');
Utl_File.Fclose(n_file);
End;
Jak wspomniałem w powyższym przykładzie, obiekt katalogu MY_DIR musi istnieć. Obiekt katalogu w Oracle jest odniesieniem do katalogu fizycznego na serwerze. Oto przykład tworzenia obiektu katalogu w Oracle:
-- Windows example CREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\oracle\csvfiles'; -- Linux example CREATE OR REPLACE DIRECTORY CSVDIR AS '/usr1/oracle/csvfiles';
Aby dowiedzieć się więcej o obiekcie katalogu w Oracle, sprawdź ten link.
Eksportuj dane z tabeli do CSV w przykładzie Oracle
Poniżej znajduje się przykład procedury składowanej w Oracle, która eksportuje dane z tabeli EMP do pliku CSV:
Create Or Replace Procedure exp_emp_data Is
n_file utl_file.file_type;
v_string Varchar2(4000);
-- get the data using cursor
Cursor c_emp Is
Select
empno,
ename,
deptno,
sal,
comm
From
emp;
Begin
n_file := utl_file.fopen('CSVDIR', 'empdata.csv', 'w', 4000);
-- if you do not want heading then remove below two lines
v_string := 'Emp Code, Emp Name, Dept, Salary, Commission';
utl_file.put_line(n_file, v_string);
-- open the cursor and concatenate fields using comma
For cur In c_emp Loop
v_string := cur.empno
|| ','
|| cur.ename
|| ','
|| cur.deptno
|| ','
|| cur.sal
|| ','
|| cur.comm;
-- write each row
utl_file.put_line(n_file, v_string);
End Loop;
-- close the file
utl_file.fclose(n_file);
Exception
When Others Then
-- on error, close the file if open
If utl_file.is_open(n_file) Then
utl_file.fclose(n_file);
End If;
End; Teraz twoja procedura składowana została utworzona, uruchom ją, aby wyeksportować dane:
Begin
exp_emp_data;
End; Powiązane samouczki:
- Narzędzie:generuj procedurę PL/SQL do eksportu danych z tabeli
-
Zainstaluj klienta Oracle z wiersza poleceń bez interakcji z użytkownikiem
-
Wyszukaj określony ciąg w kolumnie Oracle clob
-
Najlepszy sposób na skrócenie ciągu UTF8 na podstawie długości bajtów
-
Blokady Oracle i blokady tabeli:jak to działa
-
PL/SQL:jak monitować użytkownika o wprowadzenie danych w procedurze?