oracle 如何把表导出csv

2024-03-18 19:32
文章标签 oracle 导出 csv 把表

本文主要是介绍oracle 如何把表导出csv,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CREATE  OR  REPLACE  PROCEDURE  SQL_TO_CSV
     (
         P_QUERY  IN  VARCHAR2,                         -- PLSQL文
         P_DIR  IN  VARCHAR2,                           -- 导出的文件放置目录
         P_FILENAME  IN  VARCHAR2                       -- CSV名
)
IS
         L_OUTPUT UTL_FILE.FILE_TYPE;
         L_THECURSOR  INTEGER  DEFAULT  DBMS_SQL.OPEN_CURSOR;
         L_COLUMNVALUE VARCHAR2(4000);
         L_STATUS  INTEGER ;
         L_COLCNT NUMBER := 0;
         L_SEPARATOR VARCHAR2(1);
         L_DESCTBL DBMS_SQL.DESC_TAB;
         P_MAX_LINESIZE NUMBER := 32000;
BEGIN
         --OPEN FILE
         L_OUTPUT := UTL_FILE.FOPEN(P_DIR, P_FILENAME, ‘W’, P_MAX_LINESIZE);
  
         --DEFINE DATE FORMAT
         EXECUTE  IMMEDIATE ‘ ALTER  SESSION  SET  NLS_DATE_FORMAT=’’YYYY-MM-DD HH24:MI:SS’’’;
  
         --OPEN CURSOR
         DBMS_SQL.PARSE( L_THECURSOR, P_QUERY, DBMS_SQL.NATIVE );
         DBMS_SQL.DESCRIBE_COLUMNS( L_THECURSOR, L_COLCNT, L_DESCTBL );
  
         --DUMP TABLE COLUMN NAME
         FOR  IN  1 .. L_COLCNT LOOP
             UTL_FILE.PUT( L_OUTPUT, L_SEPARATOR || ‘”’ || L_DESCTBL(I).COL_NAME || ‘”’ );
             DBMS_SQL.DEFINE_COLUMN( L_THECURSOR, I, L_COLUMNVALUE, 4000 );
             L_SEPARATOR := ‘,’;
         END  LOOP;
         UTL_FILE.NEW_LINE( L_OUTPUT );
  
         --EXECUTE THE QUERY STATEMENT
         L_STATUS := DBMS_SQL. EXECUTE (L_THECURSOR);
  
         --DUMP TABLE COLUMN VALUE
         WHILE ( DBMS_SQL.FETCH_ROWS(L_THECURSOR) > 0 ) LOOP
             L_SEPARATOR := ‘’;
             FOR  IN  1 .. L_COLCNT LOOP
                 DBMS_SQL.COLUMN_VALUE( L_THECURSOR, I, L_COLUMNVALUE );
                 UTL_FILE.PUT( L_OUTPUT, L_SEPARATOR || ‘”’ ||
                 TRIM(BOTH ‘ ‘  FROM  REPLACE (L_COLUMNVALUE,’”’,’””’)) || ‘”’);
                 L_SEPARATOR := ‘,’;
             END  LOOP;
             UTL_FILE.NEW_LINE( L_OUTPUT );
         END  LOOP;
  
         --CLOSE CURSOR
         DBMS_SQL.CLOSE_CURSOR(L_THECURSOR);
  
         --CLOSE FILE
         UTL_FILE.FCLOSE( L_OUTPUT );
EXCEPTION
         WHEN  OTHERS  THEN
         RAISE;
END ;

这篇关于oracle 如何把表导出csv的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/823418

相关文章

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.