[原]Oracle外部表结合游标完成统计一例
近日在邮件系统进行迁移的过程中遇到一个问题,我用Oracle的外部表结合游标将其解决,特记于此文。
问题是这样的,通过开发商的程序,得到一个操作文件 delete_file ,该文件记录了一些操作不步骤,其中的内容如下:
.... ..... ...... sm zh@______.com df /Draft df /Junkmail sm dzt@_____.com df /Draft df /Junkmail sm master@_______.com mm 345 /Drafts mm 344 /Drafts mm 343 /Drafts mm 342 /Drafts df /Draft df /Junkmail sm jtj_yxxf@_________.cn df /Draft df /Junkmail ...... ..... ....
其中 sm命令是指将当前上下文切换到哪个邮箱,mm 命令是移动邮件的命令,现在要统计一下,每个邮箱被移动的邮件各有多少封。譬如,master@_______.com 这个账号被移动的邮件就要4封。
我的思路是,将这个表导入数据库或者作为一个可读取的外部表,然后使用游标自上而下地读取,然后随着游标的移动做统计,算法很简单。
我将操作文件放在Linux上面处理:
[root@mailserver tmp]# pwd /tmp [root@mailserver tmp]# chmod 777 ./mail/ [root@mailserver tmp]# ll 总用量 12 drwxrwxrwx 2 root root 4096 10月 10 22:39 mail srwxr-xr-x 1 root root 0 7月 1 14:43 mapping-root drwxr-xr-x 3 root root 4096 9月 24 10:56 orion drwx------ 2 root root 4096 10月 10 22:24 ssh-coEvb25444 prw------- 1 root root 0 8月 19 17:49 vmware-root.0 [root@mailserver tmp]# cd mail/ [root@mailserver mail]# ls delete_file [root@mailserver mail]# chmod 666 delete_file [root@mailserver mail]# ll 总用量 252 -rw-rw-rw- 1 root root 244758 10月 10 22:58 delete_file
然后在Oracle中给我一个测试用户 dcb_user 给与一定的权限:
sys@mydb(10.168.0.202) SQL> grant create any directory to dcb_user2 /Grant succeeded.Elapsed: 00:00:00.07
然后创建一个目录及基于文件的外部表:
create or replace directory mail_dir as '/tmp/mail/';create table delete_file (line varchar2(200) ) organization external (type oracle_loaderdefault directory mail_diraccess parameters( records delimited by newlinefieldsreject rows with all null fields)location('delete_file') ) reject limit unlimited;
至此,就可以使用select 语句查询这个文件了。
我再建一个统计表,用于记录统计信息,很简单:
create table mail_stat ( account varchar2(50) , mail int );
以下是我的统计代码:
CREATE OR REPLACE PROCEDURE delete_state ISv_line varchar2(200);v_account varchar2(50);CURSOR cur is select line from delete_file;BEGIN open cur;loopfetch cur into v_line;EXIT when cur%NOTFOUND; if instr(v_line,'sm ')=1 thenv_account := REPLACE(v_line,'sm ','');insert into mail_stat (account,mail) values ( v_account , 0 );end if;if instr(v_line,'mm ')=1 thenupdate mail_stat set mail=mail+1 where account=v_account;end if;END LOOP;CLOSE cur;COMMIT; END delete_state ;
经过以上的准备工作之后,我就可以轻松统计我所要的统计信息了。
转载于:https://www.cnblogs.com/killkill/archive/2009/10/11/1580820.html
[原]Oracle外部表结合游标完成统计一例相关推荐
- Oracle 外部表
外部表是指不存在于数据库中的表.通过向Oracle 提供描述外部表的元数据,可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问.外部表是对数据库表的延伸. ...
- oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错...
我已经建立了一个简单的Oracle外部表测试,我(与DBA和Unix管理员一起)无法工作. 以下内容基于Oracle的External Tables Concepts.我们使用的数据库是11g. 这是 ...
- oracle外部表导入,oracle 外部表导入时间日期类型数据
oracle 外部表导入时间日期类型数据以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 建立外部表目录 create d ...
- 外部表如何导入mysql_如何利用Oracle外部表导入文本文件的数据
Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的 同事最近在忙数据一致性比对工作,需要对不同文 ...
- oracle数据库dblink创建语句_3场直播丨达梦DM8数据库安装部署初体验、新基建下的国产数据库应用和发展趋势、Oracle外部表创建与使用...
1. 循序渐进-达梦DM8数据库安装部署初体验-07/16 简介: 本讲座主要介绍达梦DM8数据库软件安装与数据库创建. 2019年5月,DM8发布. 基于新技术发展的思考和市场的需求,坚持实用性.通 ...
- 3场直播丨达梦DM8数据库安装部署初体验、新基建下的国产数据库应用和发展趋势、Oracle外部表创建与使用...
1. 循序渐进-达梦DM8数据库安装部署初体验-07/16 简介: 本讲座主要介绍达梦DM8数据库软件安装与数据库创建. 2019年5月,DM8发布. 基于新技术发展的思考和市场的需求,坚持实用性.通 ...
- oracle外部表kup-04023,sqlldr如何添加忽律错误得参数
Oracle外部表使用方法 1. 版本信息 SQL> conn / as sysdba; 已连接. SQL> select * from v$version; BANNER ...
- 使用Oracle外部表来查询分析警告日志
使用 Oracle 外部表来查询分析警告日志 Oracle 中的警告日志按照时间发生顺序记录了 Oracle 数据库出现的内部错误,以便通过这个警告日志提醒用户,用户通过查询警告日志来分析 Oracl ...
- oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表
一.导入 SQLldr SQL*LOADER可以把txt文件,Excel文件导入到数据库中.使用SQLloader导入导出需要一个数据文件和一个控制文件.数据文件中存了你需要导入的数据,控制文件中写你 ...
最新文章
- Creating a LINQ Enabled ASP.NET Web application template using C#.[转]
- 敲代码就是一把梭_2020必看!开发五年的大佬日常工作中所使用的java代码技巧...
- python购物车程序-Python编写购物车程序
- python3字符串转数字_Python 3.6.0 正式版发布附新特性说明
- IBM希望其“裁剪”过的Swift能够引诱你使用BlueMix云
- 十三种技术文档模板_在线文档,知多少?
- 信息学奥赛一本通(1092:求出e的值)
- devsecops_DevSecOps管道和工具:您需要了解的内容
- leetcode74:二维矩阵搜索问题
- Beego框架简介准备搭建分布式爬虫
- python启动文件_Python启动文件配置
- Cesium:搭建运行环境
- 【Windows】添加开机启动项
- 在php中cm和kg用什么表示,将g/cm³换算为kg/m³ (克每立方厘米换算为千克每立方米)...
- Mac python 安装信息安全,Pycrypto 出现,C compiler cannot create executablesC编辑器不能创建可执行文件
- c++ 函数后面加一个冒号的含义
- 奥运五环的含义及其颜色对应码
- 分享一个整理了很多Android开发工具类的链接AndroidUtilCode
- 小萝莉和他的数学迷老爸
- 关于身份认证中的Authenticator及AuthenticationStrategy
热门文章
- Yocto tips (17): Yocto License问题:restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
- react-redux
- 单片机中去耦电容的使用
- iptable防火墙流程图
- 设计模式——工厂方法
- linux下DNS服务器的配置
- small - HTML元素
- 处女篇:ObjectDataSource+CodeSmith实现基础增删改查功能
- 让你人际关系更上一层楼的26条原则
- postman支持socket吗_你必须知道postman和Jmeter做接口测试区别