| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
gd7g
9年前发布

从mongoDB中定时导出数据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"