Heim  >  Artikel  >  Datenbank  >  Linux上从mongoDB中定时导出数据脚本

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

WBOY
WBOYOriginal
2016-06-07 17:06:091305Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn