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

WBOY
풀어 주다: 2016-06-07 17:06:09
원래의
1281명이 탐색했습니다.

目标:编写一个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命令将脚本加到定时任务当中

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!