Linux上从mongoDB中定时导出数据脚本

2019-06-16 02:09栏目:技术创新
TAG:

目标:编写一个shell脚本,以便能够将mongoDb中的数据导出成为csv格式的文件。

要求:

以下是一个例子,将代码保存为.sh文件后使用 chmod x 将该脚本设置为可执行,然后使用crontab命令将脚本加到定时任务当中

  1. 为了避免导出巨量数据,仅需要过滤出当月数据和上个月的数据即可。

  2. 由于当天的数据是不完整的,所以需要排除当天的数据

#!/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"
#该片段来自于http://outofmemory.cn

版权声明:本文由新浦京娱乐站_新浦京娱乐场官网_新浦京娱乐发布于技术创新,转载请注明出处:Linux上从mongoDB中定时导出数据脚本