您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2025/11/11 9:21:38发布9次查看
目标:编写一个shell脚本,以便能够将mongodb中的数据导出成为csv格式的文件。要求:1. 为了避免导出巨量数据,仅需要过滤出当月
目标:编写一个shell脚本,,以便能够将mongodb中的数据导出成为csv格式的文件。
要求:
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
----------------------------------------------------------------------------
保存为.sh文件后使用 chmod +x 将该脚本设置为可执行,然后使用crontab命令将脚本加到定时任务当中
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product