• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 23次浏览 已收录 0个评论

目标:编写一个shell脚本,以便能够将mongoDb中的数据导出成为csv格式的文件。要求:1. 为了避免导出巨量数据,仅需要过滤出当月

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

要求:

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

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

以下是一个例子

——————————————————来1源gaodai#ma#com搞*代#码1网——————–

#!/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命令将脚本加到定时任务当中


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Linux上从mongoDB中定时导出数据脚本

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址