Oracle导出clob字段到csv

2024-05-31 14:12
文章标签 oracle 导出 csv 字段 clob

本文主要是介绍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 isl_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;
BEGINdbms_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 loopif l_col_desc(i).col_type = 112 thendbms_sql.define_column(l_theCursor, i, l_columnValClob);elsedbms_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 thenl_output := utl_file.fopen(p_dir, p_filename, 'w', 32767);if p_is_head thenfor i in 1 .. l_col_desc.count looputl_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;loopl_separator := '';for i in 1 .. l_colCnt loopif l_col_desc(i).col_type = 112 thenl_offset := 1;dbms_sql.column_value(l_theCursor, i, l_columnValClob);utl_file.put(l_output, l_separator);loopl_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;elsedbms_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
DECLAREl_sql dbms_sql.varchar2a;l_cnt integer;
BEGINl_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.

这篇关于Oracle导出clob字段到csv的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

关于pandas的read_csv方法使用解读

《关于pandas的read_csv方法使用解读》:本文主要介绍关于pandas的read_csv方法使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录pandas的read_csv方法解读read_csv中的参数基本参数通用解析参数空值处理相关参数时间处理相关

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Mysql表如何按照日期字段的年月分区

《Mysql表如何按照日期字段的年月分区》:本文主要介绍Mysql表如何按照日期字段的年月分区的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、创键表时直接设置分区二、已有表分区1、分区的前置条件2、分区操作三、验证四、注意总结一、创键表时直接设置分区

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作