Oracle
 sql >> Database >  >> RDS >> Oracle

Come esportare i dati in un file CSV in Oracle utilizzando la procedura PL SQL

Di seguito è riportato l'esempio passo passo per esportare i dati in un file CSV in Oracle utilizzando la procedura PL SQL. In questo esempio, i dati vengono esportati da alcuni campi di Emp table of Scott schema in un file CSV utilizzando il pacchetto Oracle UTL_FILE. Seguire i passaggi seguenti per esportare i dati dalla tabella del database Oracle in un file CSV.

1. Crea un oggetto Directory in cui scriverai un file CSV.

-- per i sistemi Windows crea come segue cambia la cartella evidenziata con la tua directory
CREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\temp'
/
-- per i sistemi Unix/Linux creare come segue
CREATE OR REPLACE DIRECTORY CSVDIR AS '/temp/'
/
Nota:cambia la posizione della cartella nella posizione della tua directory, ad esempio c:\abc o /abc/.

2. Crea una procedura di database nello schema Scott o se stai creando in un altro schema, assicurati di avere la tabella Emp in quello schema, altrimenti devi cambiare il cursore e i riferimenti ai campi per qualsiasi altra tabella.

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. Ora esegui la procedura come segue:

BEGIN
   export_to_csv;
END;
Ora puoi controllare la tua directory che hai specificato nel comando Crea directory che il file empdata.csv deve esistere con i dati della tabella. Ho creato una utility che genera la procedura online provala:
  • Genera procedura PL/SQL online per esportare dati da una tabella