windows 里excel 转到linux 里有tab分隔符,导数据_存储过程导入数据_从excel或tab键为分隔的导入数据...

该博客介绍了一个Oracle PL/SQL过程,用于读取指定名称的文本文件,并利用Tab分隔的数据进行数据库表的导入操作。通过处理文件行,提取字段并插入到`test`表中,实现了数据的批量导入。过程中包含了异常处理和事务管理确保数据的完整性和一致性。
摘要由CSDN通过智能技术生成

CREATE OR REPLACE PROCEDURE p_read(

file_name  VARCHAR2

)AS

v_text                 VARCHAR2(4000);

v_firstlocation1       NUMBER;

v_firstlocation2       NUMBER;

v_firstlocation3       NUMBER;

vfile                  utl_file.file_type;

vempno                 VARCHAR2(50);

vename                 VARCHAR2(50);

VHIREDATE              VARCHAR2(50);

BEGIN

vfile := utl_file.fopen('TEST',file_name,'r');

--utl_file.put_line(vfile,'导出emp表数据');

LOOP

BEGIN

utl_file.get_line(vfile,v_text);

EXCEPTION

WHEN NO_DATA_FOUND THEN

EXIT;

END;

v_firstlocation1 := instr(v_text,chr(9),1,1);---文本文件第一个,位置

v_firstlocation2 := instr(v_text,chr(9),v_firstlocation1,2);---文本文件第二个,位置

--为excel或tab为分隔符的文本导入

vempno := substr(v_text,1,v_firstlocation1-1);

vename := substr(v_text,v_firstlocation1,v_firstlocation2-v_firstlocation1+1);

VHIREDATE := substr(v_text,v_firstlocation2,length(v_text)-1);

BEGIN

INSERT INTO test(

vempno,

vename,

VHIREDATE

)

SELECT

vempno,

vename,

VHIREDATE

FROM dual;

IF SQL%ROWCOUNT = 0 THEN

ROLLBACK;

ELSE

COMMIT;

END IF;

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

END;

END LOOP;

utl_file.fclose(vfile);

EXCEPTION

WHEN OTHERS THEN

utl_file.fclose(vfile);

END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24805255/viewspace-721340/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值