Oracle导出clob字段到csv

使用UTL_FILE

ref: How to Export The Table with a CLOB Column Into a CSV File using UTL_FILE ?(Doc ID 1967617.1)

--preapre data
CREATE TABLE TESTCLOB(ID NUMBER, MYCLOB1 CLOB, MYCLOB2 CLOB );
INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(1,'Sample row 11', 'Sample row 12');
INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(2,'Sample row 21', 'Sample row 22');
INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(3,'Sample row 31', 'Sample row 32');
INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(4,'Sample row 41', 'Sample row 42');
INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(5,'Sample row 51', 'Sample row 52');
COMMIT;

column MYCLOB1 format a20
column MYCLOB2 format a20
SELECT * FROM TESTCLOB;

--create directory
CREATE OR REPLACE DIRECTORY MYDIR AS '/u02/';


--create function
CREATE OR REPLACE FUNCTION EXPORT_TABLE_TO_CSV_FILE(p_query     in dbms_sql.varchar2a,
                                                      p_separator in varchar2 default ',',
                                                      p_dir       in varchar2,
                                                      p_filename  in varchar2,
                                                      p_is_head   in boolean default false)
  RETURN NUMBER is
  l_output        utl_file.file_type;
  l_theCursor     integer default dbms_sql.open_cursor;
  l_columnValue   varchar2(2000);
  l_columnValClob clob;
  l_status        integer;
  l_colCnt        number default 0;
  l_separator     varchar2(10) default '';
  l_cnt           number default 0;
  l_col_desc      dbms_sql.desc_tab;
  l_offset        integer;
BEGIN
  dbms_sql.parse(l_theCursor,
                 p_query,
                 p_query.first,
                 p_query.last,
                 true,
                 dbms_sql.native);
  dbms_sql.describe_columns(l_theCursor, l_colCnt, l_col_desc);
  for i in 1 .. l_colCnt loop
    if l_col_desc(i).col_type = 112 then
      dbms_sql.define_column(l_theCursor, i, l_columnValClob);
    else
      dbms_sql.define_column(l_theCursor, i, l_columnValue, 4000);
    end if;
  end loop;
  l_status := dbms_sql.execute(l_theCursor);
  if dbms_sql.fetch_rows(l_theCursor) > 0 then
    l_output := utl_file.fopen(p_dir, p_filename, 'w', 32767);
    if p_is_head then
      for i in 1 .. l_col_desc.count loop
        utl_file.put(l_output, l_separator || l_col_desc(i).col_name);
        l_separator := p_separator;
      end loop;
      utl_file.new_line(l_output);
    end if;
    loop
      l_separator := '';
      for i in 1 .. l_colCnt loop
        if l_col_desc(i).col_type = 112 then
          l_offset := 1;
          dbms_sql.column_value(l_theCursor, i, l_columnValClob);
          utl_file.put(l_output, l_separator);
          loop
            l_columnValue := dbms_lob.substr(l_columnValClob,
                                             2000,
                                             l_offset);
            -- dbms_output.put_line(l_columnValue);
            l_offset := l_offset + 2000;
            utl_file.put(l_output, l_columnValue);
            exit when trim(l_columnValue) is null;
          end loop;
        else
          dbms_sql.column_value(l_theCursor, i, l_columnValue);
          utl_file.put(l_output, l_separator || l_columnValue);
        end if;
        l_separator := p_separator;
      end loop;
      utl_file.new_line(l_output);
      l_cnt := l_cnt + 1;
      exit when(dbms_sql.fetch_rows(l_theCursor) <= 0);
    end loop;
  end if;
  dbms_sql.close_cursor(l_theCursor);
  utl_file.fclose(l_output);
  return l_cnt;
END;
/



set serverout on
DECLARE
  l_sql dbms_sql.varchar2a;
  l_cnt integer;
BEGIN
  l_sql(1) := 'SELECT * FROM TESTCLOB';
  l_cnt := export_table_to_csv_file(l_sql,
                                    ',',
                                    'MYDIR',
                                    'csvsample.csv',
                                    TRUE);
END;
/


使用sql developer

oracle开发的sql developer运行需要java.速度慢.
(不是plsql developer).
下载
在这里插入图片描述
1.Open SQL Developer:

Connect to your Oracle database using Oracle SQL Developer.
2. Run SQL Query:

Run a query to select the CLOB data.
SELECT clob_column FROM your_table;
3. Export the Data:

Right-click on the result set and choose the “Export” option.
Select “CSV” as the format and follow the prompts to save the data to a CSV file.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/663349.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

标准化产品需求文档逻辑思路

​PRD被公认为产品经理的标准文档&#xff0c;但你写PRD文档时是否做过这些事&#xff1a; 1.下载模版&#xff0c;填入内容&#xff1b; 2.不了解的章节内容&#xff0c;略过或删掉&#xff1b; 3.找己经做好的PRD&#xff0c;做内容替换。 以前我所在的公司&#xff0c;PRD管…

用Idea 解决Git冲突

https://intellijidea.com.cn/help/idea/resolving-conflicts.html https://www.jetbrains.com/help/idea/resolve-conflicts.html idea 官方文档 当您在团队中工作时&#xff0c;您可能会遇到这样的情况:有人对您当前正在处理的文件进行更改。如果这些更改没有重叠(也就是说…

Linux系统使用Docker安装Drupal结合内网穿透实现远程访问管理后台

目录 前言 1. Docker安装Drupal 2. 本地局域网访问 3 . Linux 安装cpolar 4. 配置Drupal公网访问地址 5. 公网远程访问Drupal 6. 固定Drupal 公网地址 前言 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊Linux系统使用Docker安装Drupal…

接口测试工具:Postman的下载安装及使用

1 Postman 介绍 1.1 Postman 是什么 Postman 是一款功能超级强大的用于发送 HTTP 请求的 测试工具 做 WEB 页面开发和测试的人员常用工具 创建和发送任何的 HTTP 请求(Get/Post/Put/Delete...) 1.2 Postman 相关资源 1.2.1 官方网站&#xff1a;https://www.postman.com/ …

CCIG 2024:合合信息文档解析技术突破与应用前景

目录 背景当前大模型训练和应用面临的问题训练Token耗尽训练语料质量要求高LLM文档问答应用中文档解析不精准 合合信息的文档解析技术1. 具备多文档元素识别能力2. 具备版面分析能力3. 高性能的文档解析4. 高精准、高效率的文档解析文档多板式部分示例 文档解析典型技术难点元素…

基于Java的KTV点歌系统

开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术&#xff0c;JAVA&#xff0c;B/S架构 工具&#xff1a;浏览器&#xff08;360浏览器、谷歌浏览器、QQ浏览器等&#xff09;&#xff0c;数据库管理工具&#xff08;MySQL&#xff09; 系统展示 …

GPT-4o:人工智能技术的新巅峰

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

DBeaver连接Oracle报错:ORA-12514

Listener refused the connection with the following error:ORA-12514, TNS:listener does not currently know of service requested inconnect descriptor ———————————————— 1.报错信息2.配置正确结语 ———————————————— 如果是第一次连接Or…

IP地址开启HTTPS方法

可以使用IP地址申请SSL证书&#xff0c;申请之前必须是公网IP地址&#xff0c;不支持内网IP地址申请。 申请过程需要确定IP地址外网可以访问&#xff0c;这里特别注意只是申请过程中可以访问。访问验证过程必须采取80端口、443端口两者选择1个&#xff0c;不可以用其它端口进行…

「手把手prompt1」相关介绍

「手把手prompt1」相关介绍 在人工智能领域迅速发展的当下&#xff0c;“prompt” 这个术语正逐渐成为焦点。本文将带您深入了解prompt的本质&#xff0c;以及它如何影响我们与AI系统的互动。您将学习到&#xff0c;通过精确的指令设计&#xff0c;可以引导AI系统产出精确和有…

使用Minikube+docker+harbor+k8s自动化部署 @by_TWJ

目录 1. 开始1.1. 环境1.2. 测试的git仓库1.3. 离线文件1.4. 安装docker1.5. 安装docker-compose&#xff08;非必要&#xff09;1.6. 安装Jenkins1.7. 安装harbor1.8. 允许docker通过http访问私有仓库1.9. 修改/etc/hosts&#xff0c;追加自定义域名1.10. 安装Minikube 2. min…

【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析

&#x1f525; 个人主页&#xff1a;空白诗 &#x1f525; 热门专栏&#xff1a;【JavaScript】 文章目录 &#x1f33f; 引言一、 let 和 const - 变量声明的新方式 &#x1f31f;&#x1f4cc; var的问题回顾&#x1f4cc; let的革新&#x1f4cc; const的不变之美 二、 Arro…

CasaOS玩客云安装全平台高速下载器Gopeed并实现远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Spring-Cloud-CircuitBreaker-Resilience4j (3.1.1)

介绍 Resilience4j 是一个专为函数式编程而设计的轻量级容错库。Resilience4j 提供高阶函数&#xff08;装饰器&#xff09;&#xff0c;以增强任何功能接口、lambda 表达式或方法引用&#xff0c;包括断路器、速率限制器、重试或隔板。您可以在任何函数接口、lambda 表达式或…

每日复盘-20240530

今日重点关注&#xff1a; 20240530 六日涨幅最大: ------1--------300637--------- 扬帆新材 五日涨幅最大: ------1--------300637--------- 扬帆新材 四日涨幅最大: ------1--------300637--------- 扬帆新材 三日涨幅最大: ------1--------301129--------- 瑞纳智能 二日涨…

Stable Diffusion AI绘画:从创意词汇到艺术图画的魔法之旅

文章目录 一、Stable Diffusion的工作原理二、从提示词到模型出图的过程三、Stable Diffusion在艺术创作中的应用《Stable Diffusion AI绘画从提示词到模型出图》内容简介作者简介楚天 目录前言/序言本书特色特别提示 获取方式 在科技的飞速发展中&#xff0c;Stable Diffusion…

读取YUV数据到AVFrame并用多线程控制帧率

文件树&#xff1a; 1.xvideo_view.h class XVideoView { public:// 像素格式枚举enum Format { RGBA 0, ARGB, YUV420P };// 渲染类型枚举enum RenderType { SDL 0 };// 创建渲染对象的静态方法static XVideoView* Create(RenderType type SDL);// 绘制帧的方法bool DrawF…

Word下一页怎么操作?6个操作方法分享!

在使用Word进行文档编辑时&#xff0c;经常需要设置分页、跳转页面或者对页面进行特定的布局调整。其中&#xff0c;“下一页”这一操作通常涉及到页面布局、分页符的插入、页面跳转等多个方面。 Word下一页怎么操作&#xff1f;很简单&#xff0c;方法已经准备好啦&#xff0…

Python代码:二十五、有序的列表

1、题目 创建一个依次包含字符串P、y、t、h、o和n的列表my_list&#xff0c;先使用sorted函数对列表my_list进行临时排序&#xff0c;第一行输出排序后的完整列表&#xff0c;第二行输出原始的列表。再使用sort函数对列表my_list进行降序排序&#xff0c;第三行输出排序后完整…

20240531瑞芯微官方Toybrick TB-RK3588开发板在Debian11下的关机尝试

20240531瑞芯微官方Toybrick TB-RK3588开发板在Debian11下的关机尝试 2024/5/31 9:10 https://t.rock-chips.com/forum.php?modforumdisplay&fid51 在Toybrick的论坛以关键词搜索&#xff1a;关机 可以找到抱怨这个的人很多&#xff01; &#xff08;一&#xff09;【失败…