Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment exporter des données dans un fichier CSV dans Oracle à l'aide de la procédure PL SQL

Vous trouverez ci-dessous un exemple étape par étape pour exporter des données dans un fichier CSV dans Oracle à l'aide de la procédure PL SQL. Dans cet exemple, les données sont exportées à partir de certains champs de la table Emp du schéma Scott dans un fichier CSV à l'aide du package Oracle UTL_FILE.Suivez les étapes ci-dessous pour exporter les données de la table de la base de données Oracle vers un fichier CSV.

1. Créez un objet de répertoire dans lequel vous écrirez un fichier CSV.

-- pour les systèmes Windows, créez comme suit, modifiez le dossier en surbrillance avec votre répertoire
CREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\temp'
/
-- pour les systèmes Unix/Linux, créez comme suit
CREATE OR REPLACE DIRECTORY CSVDIR AS '/temp/'
/
Remarque :remplacez l'emplacement du dossier par l'emplacement de votre répertoire, par exemple, c:\abc ou /abc/.

2. Créez une procédure de base de données dans le schéma Scott ou si vous créez dans un autre schéma, assurez-vous d'avoir la table Emp dans ce schéma, sinon vous devez modifier le curseur et les références de champ pour toute autre table.

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. Exécutez maintenant la procédure comme suit :

BEGIN
   export_to_csv;
END;
Vous pouvez maintenant vérifier votre répertoire que vous avez spécifié dans la commande Créer un répertoire que le fichier empdata.csv doit exister avec les données de la table. J'ai créé un utilitaire qui génère la procédure en ligne essayez-le :
  • Générer une procédure PL/SQL en ligne pour exporter des données depuis une table