注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

isblog主页

或许不一定要做得最多,但一定要做得最好! 能力就是一种财富,积累越多,就越体现你

 
 
 

日志

 
 

将通话记录从Master.csv文件中导到asteriskcdrdb数据库中  

2011-09-01 14:34:17|  分类: Asterisk |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Today,长沙的数据库中有几天的通话记录丢失了,我赶快检查了/var/log/asterisk/cdr-csv/Master.csv这个文件,谢天谢地这里的数据还在,ok,有希望了,接下来的就要把数据从Master.csv导到mysql数据库中,小查了一会,发现一篇非常好的文章,嘿嘿,原文如下,哈哈
http://www.voip-info.org/wiki/view/Asterisk+CDR+csv+conversion+mysql
(文中有几个bug,修好后的如下,嘿嘿)


系统环境介绍
CDR 数据库:        asteriskcdrdb
CDR 表:                cdr
CVS 文件:              /var/log/asterisk/cdr-csv/Master.csv

第一步:
创建一个名为“impcdr2sql”的文件,内容如下
  1. #!/bin/bash
  2. # make a copy of the original Master.csv file to Master.csv.mod
  3. cp -vf /var/log/asterisk/cdr-csv/Master.csv /var/log/asterisk/cdr-csv/Master.csv.mod
  4. #  format the file to comply with the MySQL data (delete '"' chars when needed)
  5. #  use a VIM script (nofielddelims.vim) for this purpose
  6. ex /var/log/asterisk/cdr-csv/Master.csv.mod -c ":source nofielddelims.vim" -c ":exit"
  7. # run the MySQL commands from the cmd.sql file
  8. mysql -u root -p < cmd.sql
复制代码
第二步:
给执行的权利
  1. chmod a+x impcdr2sql
复制代码
第三步:
创建一个名为“nofielddelims.vim”的vim的脚本,用以整理Master.cvs文件中的原始数据,内容如下
  1. "
  2. " Delete '"' chars at the beginning of the line
  3. "
  4. :%s/^"//
  5. "
  6. " Delete '"' chars at the end of the line
  7. "
  8. :%s/"$//
  9. "
  10. " Delete '"' chars near the ',' char
  11. "
  12. :%s/",/,/g
  13. :%s/,"/,/g
  14. "
  15. " Replace '""' by '"'
  16. "
  17. :%s/""/"/g
复制代码
第四步:

创建一个名为“cmd.sql” 的sql脚本,内容如下

  1. use asteriskcdrdb;
  2. ALTER TABLE `cdr` ADD `tmp1` VARCHAR(30)  DEFAULT "x" NOT NULL;
  3. ALTER TABLE `cdr` ADD `tmp2` VARCHAR(30)  DEFAULT "y" NOT NULL;
  4. LOAD DATA INFILE '/var/log/asterisk/cdr-csv/Master.csv.mod'
  5. replace INTO TABLE cdr
  6. FIELDS TERMINATED BY ','
  7. LINES TERMINATED BY '\n'
  8. (accountcode,src,dst,dcontext,clid,channel,dstchannel,lastapp,lastdata,calldate,tmp1,tmp2,duration,billsec,disposition,amaflags,uniqueid,userfield);
  9. ALTER TABLE `cdr` DROP `tmp1`;
  10. ALTER TABLE `cdr` DROP `tmp2`;
复制代码




第五步:


把上面这几个文件放到同一个目录里,然后 just run it!
  1. ./impcdr2sql
复制代码




执行结果如下
  1. [root@CallCenter Master]# ./impcdr2sql 
  2. `/var/log/asterisk/cdr-csv/Master.csv' -> `/var/log/asterisk/cdr-csv/Master.csv.mod'
  3. "/var/log/asterisk/cdr-csv/Master.csv.mod" 98101L, 23835418C
  4. 98101 substitutions on 98101 lines
  5. 98101 substitutions on 98101 lines
  6. 1466807 substitutions on 98101 lines
  7. 1466807 substitutions on 98101 lines
  8. 176798 substitutions on 88399 lines
  9. "/var/log/asterisk/cdr-csv/Master.csv.mod" 98101L, 20528804C written
  10. Enter password: 
  11. [root@CallCenter Master]#
复制代码
至此,数据已经成功导入mysql中,接下来就可以用惯用的sql伎俩处理啦,哈哈

踏就一个字,深夜整理,共同学习,(*^__^*) 嘻嘻……

  评论这张
 
阅读(1152)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018