從mongoDB中定時導出數據shell腳本

gd7g 10年前發布 | 5K 次閱讀 Shell

目標:編寫一個shell腳本,以便能夠將mongoDb中的數據導出成為csv格式的文件。要求:1. 為了避免導出巨量數據,僅需要過濾出當月數據和上個月的數據即可。2. 由于當天的數據是不完整的,所以需要排除當天的數據以下是一個例子,將代碼保存為.sh文件后使用 chmod +x 將該腳本設置為可執行,然后使用crontab命令將腳本加到定時任務當中

#!/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"</pre>

 本文由用戶 gd7g 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!