Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle PL/SQL:Eksportuj dane z tabeli do CSV

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
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zainstaluj klienta Oracle z wiersza poleceń bez interakcji z użytkownikiem

  2. Wyszukaj określony ciąg w kolumnie Oracle clob

  3. Najlepszy sposób na skrócenie ciągu UTF8 na podstawie długości bajtów

  4. Blokady Oracle i blokady tabeli:jak to działa

  5. PL/SQL:jak monitować użytkownika o wprowadzenie danych w procedurze?