從mongoDB中定時導出數據shell腳本
目標:編寫一個shell腳本,以便能夠將mongoDb中的數據導出成為csv格式的文件。要求:1. 為了避免導出巨量數據,僅需要過濾出當月數據和上個月的數據即可。2. 由于當天的數據是不完整的,所以需要排除當天的數據以下是一個例子,將代碼保存為.sh文件后使用 chmod +x 將該腳本設置為可執行,然后使用crontab命令將腳本加到定時任務當中
#!/bin/bash創建保存目錄
mypath=micAnalyDir/
date +%Y/%m%dmkdir -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"</pre>