我想知道如何将查询从 PL/SQL 导出到文本文件或 csv 文件。我想到的查询会导出大量数据(大约 1 gig)。因此,我还希望将数据拆分为多个文件;
out1.csv out2.csv out3.csv
我希望能够决定要拆分多少个文件。
任何人都知道如何做到这一点?
我想知道如何将查询从 PL/SQL 导出到文本文件或 csv 文件。我想到的查询会导出大量数据(大约 1 gig)。因此,我还希望将数据拆分为多个文件;
out1.csv out2.csv out3.csv
我希望能够决定要拆分多少个文件。
任何人都知道如何做到这一点?
试试这个
用于创建 MYDIR
create or replace directory MYDIR as 'F:/DATA/';
通过SYS用户授予MYDIR的所有权限执行此过程
CREATE OR REPLACE PROCEDURE export_to_csv(refcur out sys_refcursor) IS
v_file UTL_FILE.file_type;
v_string VARCHAR2(4000);
CURSOR c_emp IS
SELECT ROLE_ID, ROLE_DESC FROM role_mst;
BEGIN
open refcur for
SELECT ROLE_ID, ROLE_DESC FROM role_mst;
v_file := UTL_FILE.fopen('MYDIR', 'empdata.csv', 'w', 1000);
-- if you do not want heading then remove below two lines
v_string := 'Emp Code, Emp Name';
UTL_FILE.put_line(v_file, v_string);
FOR cur IN c_emp LOOP
v_string := cur.ROLE_ID || ',' || cur.ROLE_DESC;
UTL_FILE.put_line(v_file, v_string);
END LOOP;
UTL_FILE.fclose(v_file);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
IF UTL_FILE.is_open(v_file) THEN
UTL_FILE.fclose(v_file);
END IF;
END;