sql >> Database >  >> RDS >> Oracle

Oracle PL/SQL:gegevens uit een tabel exporteren naar CSV

Leer hoe u de UTL_FILE . gebruikt pakket om gegevens van een tabel naar het CSV-bestand in Oracle PL/SQL te exporteren.

In Oracle is het pakket UTL_FILE bevat veel procedures en functies voor het schrijven van een tekstbestand. Hieronder staan ​​de syntaxisdetails en de noodzakelijke stappen om een ​​bestand te schrijven:

Syntaxis en stappen om een ​​bestand te schrijven met 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);

Basisvoorbeeld

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;

Zoals ik in het bovenstaande voorbeeld al zei, is het directory-object MY_DIR moet bestaan. Het directory-object in Oracle is een verwijzing naar de fysieke directory op de server. Het volgende is een voorbeeld van het maken van een directory-object in Oracle:

-- Windows example
CREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\oracle\csvfiles';
-- Linux example
CREATE OR REPLACE DIRECTORY CSVDIR AS '/usr1/oracle/csvfiles';

Raadpleeg deze link voor meer informatie over het directory-object in Oracle.

Gegevens uit een tabel exporteren naar CSV in Oracle-voorbeeld

Het volgende is een voorbeeld van een opgeslagen procedure in Oracle, die de gegevens uit de EMP-tabel naar een CSV-bestand exporteert:

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;

Nu is uw opgeslagen procedure gemaakt, voer deze uit om de gegevens te exporteren:

Begin
    exp_emp_data;
End;

Verwante tutorials:

  • Hulpprogramma:Genereer PL/SQL-procedure om gegevens uit een tabel te exporteren
  1. Tijdzoneopslag in tijdstempel van gegevenstype met tijdzone

  2. probleem bij het vinden van een lijst met bestanden in de map

  3. Een postgres-back-upbestand herstellen via de opdrachtregel?

  4. Hoe kan ik Date Datatype gebruiken in SQL Server?