从Master.csv 文件恢复通话记录数据

来源:互联网 发布:德国免费厕所知乎 编辑:程序博客网 时间:2024/04/29 13:07

原文发表于:http://bbs.voip88.com/thread-15285-1-1.html

 

有个客户11月份的通话记录数据搞丢了,需要从Master.csv文件恢复。
http://bbs.voip88.com/thread-388-1-1.html  这是我以前写的帖子,有些bug。

今天找到了个更简单的方法

环境:Elastix 2.0 VoIP88 社区汉化版+邦建CCI中间件

比如要恢复2010年11月的数据

1:执行下面的命令,把11月的数据单独倒到一个文件里

  1. cd  /var/log/asterisk/cdr-csv/
  2. cat Master.csv |grep "2010-11" > 11.csv
复制代码

2:创建一个临时表 cdr_tmp,在asteriskcdrdb数据库中
  1. # phpMyAdmin SQL Dump
  2. # version 2.5.6
  3. # http://www.phpmyadmin.net
  4. #
  5. # 主机: localhost
  6. # 生成日期: 2010 年 12 月 07 日 11:53
  7. # 服务器版本: 5.0.77
  8. # PHP 版本: 5.1.6
  9. # 数据库 : `asteriskcdrdb`
  10. # --------------------------------------------------------
  11. #
  12. # 表的结构 `cdr_tmp`
  13. #
  14. CREATE TABLE `cdr_tmp` (
  15.   `calldate` datetime NOT NULL default '0000-00-00 00:00:00',
  16.   `clid` varchar(80) NOT NULL default '',
  17.   `src` varchar(80) NOT NULL default '',
  18.   `dst` varchar(80) NOT NULL default '',
  19.   `dcontext` varchar(80) NOT NULL default '',
  20.   `channel` varchar(80) NOT NULL default '',
  21.   `dstchannel` varchar(80) NOT NULL default '',
  22.   `lastapp` varchar(80) NOT NULL default '',
  23.   `lastdata` varchar(80) NOT NULL default '',
  24.   `duration` int(11) NOT NULL default '0',
  25.   `billsec` int(11) NOT NULL default '0',
  26.   `disposition` varchar(45) NOT NULL default '',
  27.   `amaflags` int(11) NOT NULL default '0',
  28.   `accountcode` varchar(20) NOT NULL default '',
  29.   `uniqueid` varchar(32) NOT NULL default '',
  30.   `userfield` varchar(255) NOT NULL default '',
  31.   `phone_city` varchar(20) NOT NULL,
  32.   `phone_province` varchar(20) NOT NULL,
  33.   `phone_type` smallint(1) NOT NULL,
  34.   `recording` smallint(1) NOT NULL
  35. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
复制代码


3: 从文件中导入数据到cdr_tmp表中
  1. use asteriskcdrdb;
  2. ALTER TABLE `cdr_tmp` ADD `tmp1` VARCHAR(30)  DEFAULT "x" NOT NULL;
  3. ALTER TABLE `cdr_tmp` ADD `tmp2` VARCHAR(30)  DEFAULT "y" NOT NULL;
  4. LOAD DATA INFILE '/var/log/asterisk/cdr-csv/11.csv'
  5. replace INTO TABLE cdr_tmp
  6. FIELDS TERMINATED BY ',' 
  7. ENCLOSED BY  '"' 
  8. LINES TERMINATED BY '/n'
  9. (accountcode,src,dst,dcontext,clid,channel,dstchannel,lastapp,lastdata,calldate,tmp1,tmp2,duration,billsec,disposition,amaflags,uniqueid,userfield);
  10. ALTER TABLE `cdr_tmp` DROP `tmp1`;
  11. ALTER TABLE `cdr_tmp` DROP `tmp2`;
复制代码
这里面的一个关键就是文件中的字段要和表中的对应上。

这样,11月份的cdr数据就导入到了cdr_tmp表中

原创粉丝点击