前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从mongoDB中定时导出数据shell脚本

从mongoDB中定时导出数据shell脚本

原创
作者头像
用户1503405
修改2021-11-01 09:25:09
1.3K0
修改2021-11-01 09:25:09
举报
文章被收录于专栏:棒棒小飞人棒棒小飞人

目标:编写一个shell脚本,以便能够将mongoDb中的数据导出成为csv格式的文件。要求:1. 为了避免导出巨量数据,仅需要过滤出当月数据和上个月的数据即可。2. 由于当天的数据是不完整的,所以需要排除当天的数据以下是一个例子,将代码保存为.sh文件后使用 chmod +x 将该脚本设置为可执行,然后使用crontab命令将脚本加到定时任务当中

代码语言:javascript
复制
#!/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> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档