自动导出sql表的代码

时间:2018-07-30 05:00:51

标签: sql oracle-sqldeveloper

版本:17.3.1

我每天都要运行一些查询,我想在查询末尾添加一个代码,以便它以指定格式自动将表导出到计算机上的特定位置。可以说我的桌面为xlsx。

谢谢。

1 个答案:

答案 0 :(得分:1)

1。创建目录以放置表中的数据:

CREATE OR REPLACE DIRECTORY EXPORT_DATA AS 'c:\temp'

2。创建过程:

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 ('EXPORT_DATA',
                      '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。运行过程:

BEGIN
     export_to_csv;
END;