1. 需求 有一用户数据存在于csv文件,因为Apex不允许上传超过44列的数据(在该案例中有90多列),所以需求是把所有列先导入到一个clob字段,然后再用存储过程导出到对应的列。 2.解决方法 1) 创建一个有clob字段的表 CREATE TABLE TABLE3( CONTENT CLOB) ; 2

1. 需求

有一用户数据存在于csv文件,因为Apex不允许上传超过44列的数据(在该案例中有90多列),所以需求是把所有列先导入到一个clob字段,然后再用存储过程导出到对应的列。

2.解决方法

1) 创建一个有clob字段的表

CREATE TABLE "TABLE3"

( "CONTENT" CLOB

) ;

2)创建一个具有真实列的表

CREATE TABLE "TABLE4"

( "NAME" VARCHAR2(20 BYTE),

"SID" VARCHAR2(20 BYTE)

) ;

3) 准备一个csv文件

比如,文件名叫book1.csv,文件格式如下

a11,1

b2,2

c33,3

4) 把csv放到一个目录下

比如/home/oracle/csv

同时,在oracle建立一个directory对象

create or replace directory csv as '/home/oracle/csv' ;

grant read,write on directory csv to user1;

5) 写一个存储过程把csv放入clob

create or replace PROCEDURE writecsvintoclob AS

l_max_line_length integer := 32767;

l_buffer varchar2(32767);

l_file UTL_FILE.FILE_TYPE;

l_clob clob;

BEGIN

l_file := utl_file.fopen('CSV', 'book1.csv', 'r', l_max_line_length);

dbms_lob.createtemporary(l_clob, TRUE, DBMS_LOB.session);

loop

begin

utl_file.get_line(l_file, l_buffer);

dbms_lob.append(l_clob, l_buffer||';');

exception

when no_data_found then

exit;

end;

end loop;

insert into table3 (content) values (l_clob);

dbms_lob.freetemporary(l_clob);

UTL_FILE.FCLOSE(l_file);

END writecsvintoclob;

6) 写一个子存储过程把varchar放入列 (为把clob放入列做准备)

CREATE OR REPLACE PROCEDURE PUTVARCHARINTOCOL

(

P_BUFFER IN VARCHAR2

) AS

l_len number;

l_start number := 1;

l_end number := 32767;

l_amount number:=32767;

l_field varchar2(32767);

l_buffer varchar2(32767);

i number :=1;

l_sql varchar2(32767);

BEGIN

l_buffer := p_buffer || ',';

l_len :=length(l_buffer);

--dbms_output.put_line('l_len='||l_len);

l_end := instr(l_buffer, ',', l_start);

l_sql := 'insert into table4 (name,sid) values (';

while(l_start

7) 写一个存储过程把clob放入列

create or replace PROCEDURE putCLOBINTOcol AS

l_clob clob;

l_start number := 1;

l_end number := 32767;

l_amount number:=32767;

l_buffer varchar2(32767);

l_len number;

i number:=1;

BEGIN

select content into l_clob from table3;

l_len := dbms_lob.getlength(l_clob);

--dbms_output.put_line('l_len='||l_len);

l_end := instr(l_clob, ';', l_start);

while(l_start

3. 注意事项

由于有90多列,可能字符串的长度会超过32767,这需要额外处理。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

oracle clob 导出csv,在Apex把csv导入数据库Clob字段再导入到各自对应列的解决方法...相关推荐

  1. Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案

    Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案 参考文章: (1)Oracle PLSQL 导出数据table xx ...

  2. python修改csv文件字段顺序_Pandas中DataFrame交换列顺序的方法实现

    一.获取DataFrame列标签 import pandas as pd file_path = '/Users/Arithmetic/da-rnn-master/data/collectd67_po ...

  3. 记录一次将dmp文件导入oracle数据库(本地导线上),所遇到的问题及解决方法

    安装oracle环境(instantclient) 因线上已安装oracle完成版数据库,则本地只需安装instantclient即可进行导入数据操作 具体安装步骤请参考:https://blog.c ...

  4. oracle查询数据都是问号,Oracle数据库PL/SQL Developer查询结果显示问号乱码的解决方法...

    PL SQL Developer,查询结果中的中文变成了一堆问号,SQL语句中的中文被提示invalid character,不能识别. 解决方法: 执行,select userenv('langua ...

  5. linux上oracle导入mysql_Linux 下 oracle 导入数据库—数据泵方式导入dmp文件

    dmp导出数据源的oracle版本是12c,我本地oracle版本是11g,这在导入数据过程中导致出现错误 一.用system 用户登录oracle,我忘记了system密码,解决办法: [oracl ...

  6. javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)

    [0]README 0.1) 本文旨在给出 java.lang.IllegalArgumentException 异常的原因 和 处理方法, 该异常和 javah 没有半毛钱关系 : 0.2) 本文附 ...

  7. oracle 监听报错,Oracle EBS系统数据库监听报错TNS-12547、TNS-12560和TNS-00517解决方法...

    记得有一次Oracle EBS系统中止运行3小时,实在比较一次惨痛的教训,让我至今记忆犹新. 问题症状:用户反映提交的请求全部是红色错误 开始意为是并发管理"标准管理器"的问题,在 ...

  8. CSV文件导入数据库的三种方法

    将.csv格式数据导入数据库: 方式一. 在 MySQL 或者是 SQL Server 中直接编写代码,建立表格,然后导入数据. 注意:导入数据的格式要与创建数据库时的格式相同,不然会乱码.     ...

  9. Oracle如何导出dmp文件

    一:拥有oracle用户和密码 导出dmp文件 进入目录:/home/oracle/20181021 执行命令: exp 导入数据库用户名/密码 file=导出的dmp文件 log=日志名称 owne ...

  10. oracle下导出某用户表的方法

    scott/tiger是用户名和密码,handson是导出的实例名 ²按用户方式导出数据(owner当中写的是用户名) expscott/tiger@handsonfile=scott_backown ...

最新文章

  1. 区块链技术之以太坊ETH白皮书
  2. 数字图像处理6:配准与掩膜
  3. 海啸(二维前缀和/二维树状数组)
  4. java 实现nfa的化简_DFA与NFA的等价性,DFA化简
  5. 遇到问题了 .net项目发布到iis6,没有权限访问!?
  6. mysql exporter_mysql exporter
  7. 使用差分金字塔提取图像边缘 python实现
  8. [转载] 2012年上半年信管网论文复习建议
  9. 三大运营商布局金融的套路不同,还能否搭上移动支付的快车?
  10. 【ANSYS命令流】Workbench中施加流体渗透压力载荷(超详细)
  11. C51单片机-蓝牙遥控小车
  12. 34个省级行政区域,包括23个省,5个自治区,4个直辖市,2个特别行政区。
  13. windows无法连接到打印机,打印处理器不存在
  14. NFT游戏开发NFT游戏平台模板搭建NFT平台定制开发MOBOX:NFT Farmer游戏开发
  15. Fcitx使用搜狗词库与皮肤
  16. VS2016 调用matlab脚本 ——缺少mclmcr.dll
  17. 【aviutl/lua】BPM打点
  18. C杂讲 字符串格式化 组包与解包
  19. 等级考试三级(分形盒)
  20. Java 基础知识随笔1

热门文章

  1. BZOJ 1208 HNOI 2004 宠物收养所 splay
  2. 2019白金之星 第一次初赛 第一题 Polynomial
  3. Postgresql 创建主键并设置自动递增的三种方法
  4. innodb存储引擎之内存
  5. hdu 1421 搬寝室(dp)
  6. Yii2实现自定义独立验证器的方法
  7. C# 语法一 构造函数
  8. Win10系列:WinJS库控件
  9. SNF开发平台WinForm之十四-站内发送系统信息-SNF快速开发平台3.3-Spring.Net.Framework...
  10. Noip2013错误避免