mongodbからMysqlをデータ・バッチでインポートするシナリオ

2072 ワード

1、スクリプトディレクトリパス
[spark@Master data_dir]$ pwd
/home/spark/opt/data_dir
[spark@Master data_dir]$ ls -R /home/spark/opt/data_dir
/home/spark/opt/data_dir:
weixin_data.sh  yemao_log_20151214.csv  yemao_log_20151215.csv  yesterday.list

2.Shellバッチスクリプトの内容
[spark@Master data_dir]$ cat weixin_data.sh 
#/bin/bash
#echo -n "please enter a day for runing :"
#read yesterday
while read yesterday
do
cd /home/spark/opt/data_dir/
/home/spark/opt/mongodb-2.7.0/bin/mongoexport -d yemao -c yemao_log_$yesterday --csv --query '{"browser":/MicroMessenger/}' -f id,time,url_from,url_current,url_to,token -o /home/spark/opt/data_dir/yemao_log_$yesterday.csv
/usr/local/mysql/bin/mysql -udatahouse -pDTHS2016 -h120.55.189.188 -P3306 --default-character-set=utf8 -e "use logdata; LOAD DATA LOCAL INFILE '/home/spark/opt/data_dir/yemao_log_$yesterday.csv' INTO TABLE yemao_weixin_log FIELDS TERMINATED BY ',' IGNORE 1 LINES;";
done  < /home/spark/opt/data_dir/yesterday.list

3、保管日のパラメータファイル
[spark@Master data_dir]$ cat yesterday.list 
20151214
20151215

4、Mysql端対応表構造
show create table yemao_weixin_log;
CREATE TABLE `yemao_weixin_log` (
  `id` int(20) DEFAULT NULL,
  `time` varchar(200) DEFAULT NULL,
  `url_from` varchar(200) DEFAULT NULL,
  `url_current` varchar(200) DEFAULT NULL,
  `url_to` varchar(200) DEFAULT NULL,
  `token` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

5、tokenによってuvを計算する
select a1.log_date     ,count(*) uv,sum(a1.pv) pv from
(select FROM_UNIXTIME(time,'%Y%m%d') log_date,token,count(*) pv from yemao_weixin_log group by FROM_UNIXTIME(time,'%Y%m%d'),token) a1
group by a1.log_date

6、mysql load dataデータのインポート時に最初の行をフィルタリングしてIGNORE 1 LINESオプションを使用することを説明する.日付を格納するパラメータファイルは、必要に応じて書き込むことができる日付ごとに1行です.mongodbのLikeフィルタは、--query'{"browser":/MicroMessenger/}'に示すオプション、便宜上、本明細書のプログラムパスには絶対パスが書き込まれており、呼び出し時にエラーが発生しないことを確認できます.