原文发表于: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月的数据单独倒到一个文件里
- cd /var/log/asterisk/cdr-csv/
- cat Master.csv |grep "2010-11" > 11.csv
2:创建一个临时表 cdr_tmp,在asteriskcdrdb数据库中
- # phpMyAdmin SQL Dump
- # version 2.5.6
- # http://www.phpmyadmin.net
- #
- # 主机: localhost
- # 生成日期: 2010 年 12 月 07 日 11:53
- # 服务器版本: 5.0.77
- # PHP 版本: 5.1.6
- #
- # 数据库 : `asteriskcdrdb`
- #
- # --------------------------------------------------------
- #
- # 表的结构 `cdr_tmp`
- #
- CREATE TABLE `cdr_tmp` (
- `calldate` datetime NOT NULL default '0000-00-00 00:00:00',
- `clid` varchar(80) NOT NULL default '',
- `src` varchar(80) NOT NULL default '',
- `dst` varchar(80) NOT NULL default '',
- `dcontext` varchar(80) NOT NULL default '',
- `channel` varchar(80) NOT NULL default '',
- `dstchannel` varchar(80) NOT NULL default '',
- `lastapp` varchar(80) NOT NULL default '',
- `lastdata` varchar(80) NOT NULL default '',
- `duration` int(11) NOT NULL default '0',
- `billsec` int(11) NOT NULL default '0',
- `disposition` varchar(45) NOT NULL default '',
- `amaflags` int(11) NOT NULL default '0',
- `accountcode` varchar(20) NOT NULL default '',
- `uniqueid` varchar(32) NOT NULL default '',
- `userfield` varchar(255) NOT NULL default '',
- `phone_city` varchar(20) NOT NULL,
- `phone_province` varchar(20) NOT NULL,
- `phone_type` smallint(1) NOT NULL,
- `recording` smallint(1) NOT NULL
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
3: 从文件中导入数据到cdr_tmp表中
- use asteriskcdrdb;
- ALTER TABLE `cdr_tmp` ADD `tmp1` VARCHAR(30) DEFAULT "x" NOT NULL;
- ALTER TABLE `cdr_tmp` ADD `tmp2` VARCHAR(30) DEFAULT "y" NOT NULL;
- LOAD DATA INFILE '/var/log/asterisk/cdr-csv/11.csv'
- replace INTO TABLE cdr_tmp
- FIELDS TERMINATED BY ','
- ENCLOSED BY '"'
- LINES TERMINATED BY '/n'
- (accountcode,src,dst,dcontext,clid,channel,dstchannel,lastapp,lastdata,calldate,tmp1,tmp2,duration,billsec,disposition,amaflags,uniqueid,userfield);
- ALTER TABLE `cdr_tmp` DROP `tmp1`;
- ALTER TABLE `cdr_tmp` DROP `tmp2`;
这样,11月份的cdr数据就导入到了cdr_tmp表中