Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So exportieren Sie Daten in eine CSV-Datei in Oracle mithilfe des PL SQL-Verfahrens

Im Folgenden finden Sie ein Schritt-für-Schritt-Beispiel zum Exportieren von Daten in eine CSV-Datei in Oracle mithilfe des PL SQL-Verfahrens. In diesem Beispiel werden Daten aus einigen Feldern der Emp-Tabelle des Scott-Schemas exportiert in eine CSV-Datei mit dem Oracle-Paket UTL_FILE. Führen Sie die folgenden Schritte aus, um Daten aus der Oracle-Datenbanktabelle in eine CSV-Datei zu exportieren.

1. Erstellen Sie ein Verzeichnisobjekt, in das Sie eine CSV-Datei schreiben.

-- für Windows-Systeme erstellen Sie wie folgt den Ordner, der mit Ihrem Verzeichnis markiert ist
CREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\temp'
/
-- für Unix/Linux-Systeme wie folgt erstellen
CREATE OR REPLACE DIRECTORY CSVDIR AS '/temp/'
/
Hinweis:Ändern Sie den Speicherort des Ordners in Ihren Verzeichnisspeicherort, z. B. c:\abc oder /abc/.

2. Erstellen Sie eine Datenbankprozedur im Scott-Schema oder wenn Sie in einem anderen Schema erstellen, stellen Sie sicher, dass Sie die Emp-Tabelle in diesem Schema haben, andernfalls müssen Sie den Cursor und die Feldreferenzen für jede andere Tabelle ändern.

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. Führen Sie nun die Prozedur wie folgt aus:

BEGIN
   export_to_csv;
END;
Sie können jetzt überprüfen, ob Ihr Verzeichnis, das Sie im Befehl „Verzeichnis erstellen“ angegeben haben, die Datei empdata.csv enthält muss mit den Tabellendaten vorhanden sein. Ich habe ein Dienstprogramm erstellt, das die Prozedur online generiert, versuchen Sie es:
  • Generieren Sie eine PL/SQL-Prozedur online, um Daten aus einer Tabelle zu exportieren