【摘要】
在生产系统使用过程中,常常会有从数据库中导出数据的需求。支持多种导出方式,例如使用spool、utl_file等内置方法导出,利用plsql developer、等第三方工具等。
【正文】
Oracle支持多种导出方式,包括自带的工具包和第三方工具。不同工具有各自的适用场景,这里对常见的四种方案进行简要分析:
一利用utl_file将执行结果导出为.csv文件
1.1方法描述
使用流程:
1、定义字段列表(根据实际情况增减字段);
2、定义目录对象(如果没有,需要先通过create directory创建);
3、定义输出文件名称(不用写文件后缀名);
4、定义输出表格标题(可自定义显示的字段名);
5、设置执行的
6、映射字段列表(依次给字段赋值);
7、输出每一行数据。
1.2操作演示
这里演示如何通过sqlplus工具将指定SQL语句的执行结果导出到.csv文件。
指定SQL:
select
OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from
dba_objects;
说明:
dba_objects包含18万行数据。
脚本内容:
--脚本内容开始---
--会话设置
SET
SERVEROUT ON;--打开输出提示
SET
TIMING ON;--打开计时器
--定义变量
DECLARE
DIRPATHVARCHAR2(4000);--目录对象
OUTFILEVARCHAR2(4000);--输出文件名称
VSFILEUTL_FILE.FILE_TYPE; --定义用于接收文件句柄的类型
V_CNTNUMBER;--统计每个文件加载行数
--定义字段列表
--根据实际情况增减字段,为了方便,可以采用Cn的定义方式,n为查询结果的列数
C1VARCHAR2(4000);
C2VARCHAR2(4000);
C3VARCHAR2(4000);
C4VARCHAR2(4000);
C5VARCHAR2(4000);
C6VARCHAR2(4000);
BEGIN
--设置dbms_output输出的缓冲大小
--DBMS_O