linux上で定時にMongoDBからデータのエクスポート
目的:CSV形式でのMongoDBになるためにデータをエクスポートできるようwにシェルスクリプトを書く。
要求:
1.莫大な量のデータをエクスポートすることためを防ぐ、当月と先月のデータを濾過しなかればならないだけが良いです。
2.当日のデータが完備していないため、だから当日のデータを排除しなければなりません。
使い方:
1.下記コードを.shファイルで保存する
2.chmod+xでファイルの実行権限を与える
3.crontabコマンドを使ってシナリオをプラスして定時タスクに着く
run.sh
run.sh
#!/bin/bash
#ディレクトリを作成して保存する
mypath=micAnalyDir/`date +%Y/%m%d`
mkdir -p $mypath
#濾過時間を計算
baseDate=`date –date '1 months ago’ +’%m/01/%Y’`
echo $baseDate
declare -i baseTime
baseTime=$((`date –date “$baseDate" +"%s"` * 1000))
#データテーブルで指定されたデータをエクスポート
function exportData() {
exportCmd="/kingdee/mongodb/bin/mongoexport –csv"
if [ $# -gt 3 ]; then
#ここはbasetimeとendTimeは引用符号を使わないので注意してください
$exportCmd -d $1 -c $2 -f $3 -q \
“{\"$4\":{\"\$gte\":{\"\$date\":$baseTime}, \
\"\$lt\":{\"\$date\":$endTime}}}" -o $mypath/$2.csv
else
$exportCmd -d $1 -c $2 -f $3 -o $mypath/$2.csv
fi
}
#最初データテーブルのすべてのデータをエクスポート
echo export data from $baseDate
echo 'export ossDev.T_User’
fields="_id,email,registerDate,photoId"
exportData “ossDev" “T_User" $fields
#第二テーブルのsendTimeは今月と先月のデータ
echo 'export snsDev.T_Comment’
fields="_id,del,from,mbId,mbOwner,nwId,ownerId,sendTime"
exportData “snsDev" “T_Comment" $fields “sendTime"