asterisk cdr cvs mysql

  • http://192.168.1.x/phpmyadmin
  • phpadmin のsql欄に下記をペーストして実行
CREATE DATABASE asteriskcdrdb;
 
 GRANT INSERT
   ON asteriskcdrdb.*
   TO asterisk@localhost
   IDENTIFIED BY 'yorifuji';

 USE asteriskcdrdb;

 CREATE TABLE `cdr` (
 `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 '',
 `userfield` varchar(255) NOT NULL default '',
 `uniqueid` VARCHAR(32) NOT NULL default '',
 `linkedid` VARCHAR(32) NOT NULL default '',
 `sequence` VARCHAR(32) NOT NULL default '',
 `peeraccount` VARCHAR(32) NOT NULL default ''
 );
 ALTER TABLE `cdr` ADD INDEX ( `calldate` );
 ALTER TABLE `cdr` ADD INDEX ( `dst` );
 ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
  • cp /var/log/asterisk/cdr-csv/Master.csv /home/ckenko25
  • importcdr.php
  • cd /home/ckenko25
  • cp /var/log/asterisk/cdr-csv/Master.csv /home/ckenko25
  • php importcdr.php Master.csv
  • エラーが出なければこれでインポート完了
  • 発信先番号検索 SELECT * FROM `cdr` WHERE dst =0789259370
  • 発信先番号検索 SELECT * FROM `src` WHERE dst =0789259370
  • 発信日時検索 SELECT * FROM `cdr` WHERE `calldate` BETWEEN ‘2014-06-01 00:00:00’ AND ‘2014-06-31 23:59:59’
  • 当日の発信を検索 SELECT * FROM `cdr` WHERE DATE(`calldate`) = DATE( NOW())
  • 通話しなかった発信を検索 SELECT * FROM `cdr` WHERE `disposition` = ‘NO ANSWER’
  • 通話したものを検索 SELECT * FROM `cdr` WHERE `disposition` = ‘ANSWERED’
  • 通話したもので期間を限定して検索 SELECT * FROM `cdr` WHERE `calldate` BETWEEN ‘2014-06-01 00:00:00’ AND ‘2014-06-31 23:59:59’ AND `disposition` = ‘ANSWERED’
  • SELECT calldate,src,dst,duration,billsec,amaflags FROM `cdr` WHERE `calldate` BETWEEN ‘2014-06-01 00:00:00’ AND ‘2014-06-31 23:59:59’
  • billsec:通話時間 duration:呼び出し時間

MySQLでコマンドから直接クエリを実行し、CSVファイルに保存する

  • mysql -root -ppassword asteriskcdrdb -e “select * from cdr;” > users.tsv
  • mysql -u root -ppassword asteriskcdrdb -e “select * from cdr into outfile ‘/tmp/cdr8.csv’ fields terminated by ‘,’ enclosed by ‘\”‘”
  • 参考
  • CREATE TABLE tmp SELECT `calldate`,`src`,`dst`,`duration`,`billsec` FROM `cdr` WHERE `calldate` BETWEEN ‘2014-06-01 00:00:00’ AND ‘2014-06-31 23:59:59’ ORDER BY calldate DESC;
  • テーブルを削除 DROP TABLE tmp
  • 今日から1週間前を計算する CREATE TABLE tmp SELECT `calldate`,`src`,`dst`,`duration`,`billsec` FROM `cdr` WHERE `calldate` > ( NOW( ) – INTERVAL 7 DAY ) ORDER BY calldate DESC
  • uuencode <添付するファイル名> <添付ファイル名(送ったときに見えるファイル名)> | mail -s ‘サブジェクト’ メールアドレス
  • uuencode /tmp/cdr.csv cdr.csv | mail -s “asterisk cdr” ckenko25@gmail.com
  • SELECT * FROM `cdr` WHERE `calldate` > ( NOW( ) – INTERVAL 7 DAY )

一週間前のデータをメールで送る

  • vi /usr/local/bin/cdr.sh
#!/bin/sh
#
rm /tmp/cdr.csv

mysql -u root -pパスワード asteriskcdrdb -e "DROP TABLE tmp"

mysql -u root -pパスワード asteriskcdrdb -e "CREATE TABLE tmp  SELECT calldate,src,dst,duration,billsec FROM cdr WHERE calldate > ( NOW( ) - INTERVAL 7 DAY ) ORDER BY calldate DESC"

mysql -u root -pパスワード asteriskcdrdb -e "select * from tmp into outfile '/tmp/cdr.csv' fields terminated by ',' enclosed by '\"'"

uuencode /tmp/cdr.csv cdr.csv | mail -s "asterisk cdr" ckenko25@gmail.com
関連広告記事
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク