利用存储过程对excel的批量操作
来源:互联网 发布:植物学专业知乎 编辑:程序博客网 时间:2024/05/23 07:25
昨天帮助同事遇到一个问题,有两张excel表A和B,其中的字段是相同的,要做这样的操作,用两张表中的nsrsbh字段进行关联,将A表中的字段qrbz插入到B表中的相应位置,起初想到的是利用excel的自带函数VLOOKUP解决这个问题,但是在尝试之后发现并不好用,达不到实际的效果,也许是本人的excel函数水平低端。
听到这个需求,从一开始就有想用sql的想法,但是表的字段有二十多个,导入过程比较麻烦,为了避开导入,就又选择了用office自带的acess,access可以直接将excel作为数据表导入,而且可以默认的将表格的第一行检索为字段名,顿时欣喜若狂,但最后依然是失败告终,acess最后只能做到将两张表的内容合成一张表,既将A,B两张表的qrbz取出来和在一张表上,但是是作为两列存在。
最后还是选择了将两张表导入plsql中,但是又发现了新的问题,一条update语句是无法完成的(用update是因为A表中的有些数据已经手工加到B表中了),就这样用到了存储过程去尝试。
create or replace procedure chaxun
is
nb VARCHAR(20);
sql_query VARCHAR(10000);
CURSOR nsrsbh IS select SELECT_331.AA as sbh from SELECT_331,SELECT_ALL WHERE SELECT_ALL.AA = SELECT_331.AA;
tabname_row nsrsbh%rowtype;
begin
FOR tabname_row IN nsrsbh
LOOP
nb:=tabname_row.sbh;
sql_query:='update SELECT_ALL m set m.a=(select n.a from SELECT_331 n where n.aa='''||nb||''') where m.aa='''||nb||'''' ;
EXECUTE IMMEDIATE sql_query;
END LOOP;
commit;
end;
-----成功实现了需求.
这段存储是参照以前写过的一个定时提取数据的存储改的,在这里很感谢赵哥传来的备份,之前辛苦自学好不容易写出来的几句代码也没拷贝下来,现在想用又不会了,这也是我 决定以后坚持写博客的原因了,每次做完新东西以后随手记下来,日后再用也就方便了。
这是第一次尝试将excel表打入plsql进行操作,之前有过想法,但是没有做过,以后会更多的去尝试这种方法,虽然现在我也说不清原因,但总隐隐觉得会简便很多繁杂的手工操作,excel的函数不如sql+oracle函数用起来灵活,而且oracle的函数是相当全面的。
今后我 会一直在博客里更新关于数据表的操作的一些便捷方法,因为工作需求,也搞不了多高大上的东西,最常做的莫过于数据和表格的操作,手工的复制粘贴确实是一种身体和心灵的折磨,且准确程度在眼睛看花的时候根本没法保证。
- 利用存储过程对excel的批量操作
- [mysql]表批量操作的存储过程
- ADO对Sql的存储过程操作
- mysql存储过程,对游标的操作
- 存储过程导出csv文件,利用xml对csv文件内容进行批量处理
- 利用存储过程进行批量数据添加
- mysql利用存储过程批量插入数据
- 批量删除存储过程的存储过程
- 利用数据库的存储过程批量建表和批量插入数据
- 利用存储过程简化操作
- 使用python对txt,excel批量操作
- 批量删除的存储过程
- 利用VC对Excel进行操作
- 利用java对excel进行读写操作
- Oracle利用存储过程批量insert造数据和分批提交删除的例子
- 存储过程的操作
- 导出EXCEL的存储过程
- 对存储的操作
- Caffe学习系列(4):激活层(Activiation Layers)及参数
- UIBezierPath精讲
- 黑客工具总结
- 奇异值分解
- json跨域
- 利用存储过程对excel的批量操作
- 【Python Oracle】使用cx_Oracle 连接oracle的简单介绍
- Spring实现AOP的4种方式
- #java读书笔记#集合框架1
- Android nice在进程与线程调度中的作用
- Caffe学习系列(5):其它常用层及参数
- View加载详解(一)
- C/C++一些难为人知的小细节
- 通过CAGradientLayer制作渐变色效果【原创】