Windows脚本导入导出Mongodb数据库文件实现备份与恢复

2023-09-20 16:46:17

导出指定时间范围的数据

@echo off
setlocal
rem 提前将MongoDB安装的bin路径加到系统环境变量PATH里面,方便直接运行mongodump命令

if not exist D:\MongoDB_backup goto create

goto start    

:create

rem 如果没有创建导出文件目录,那么在此步骤创建
md D:\MongoDB_backup

rem 在备份路径下创建当天日期yyyyMM格式的文件夹保存数据库备份文件
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
  set t=%%a
)
:: format date to yyyyMM
set fdate=%t:~0,6%
set yy=%t:~0,4%
set mm=%t:~4,2%
set dd=%t:~6,2%
rem 拼接当前日期
set date_str=%yy%-%mm%-%dd%
rem 此处是获取当前日期,提供给 strat里的start_date参数
echo date_str is %date_str%
rem echo fdate is %fdate%

d:
cd D:\MongoDB_backup\

rem 以月份为单位创建目录
if not exist D:\MongoDB_backup\%fdate% goto createmm

:createmm
mkdir %fdate%

rem 以类型为单位创建目录
d:
cd D:\MongoDB_backup\%fdate%\
if not exist D:\MongoDB_backup\%fdate%\merge goto createmerge

:createmerge
mkdir %merge%

:start

:: 定义日期范围 当前日期
set "start_date=2023-09-21"

:: 将日期转换为UTC时间戳   因为是第二天备份前一天的数据,所以当前日期的时间戳为查询的结束日期
for /F "usebackq tokens=*" %%i in (`powershell -Command "Get-Date -Date '%start_date%' -UFormat '%%s'"`) do (
    set "end_timestamp=%%i"
)
rem 要减去8个小时才为0点
set /a "end_timestamp=end_timestamp-28800"

:: 计算下一天的日期
set /a "start_timestamp=end_timestamp-86400"



rem 将时间戳转换为日期对象,用于导出文件命名 此时要加上8个小时,不然的话日期命名是前一天
for /F "usebackq tokens=*" %%i in (`powershell -Command "([datetime]'1970-01-01').AddMilliseconds(%start_timestamp%000+28800000).ToString('yyyyMMdd')"`) do (
    set "formatted_date=%%i"
)

echo %start_timestamp%000
echo %end_timestamp%000

:: 导出数据到指定目录
mongoexport --host localhost --port 27017 --db test --collection testMongodbUser2 --query "{ \"createTime\": { \"$gte\": { \"$date\": { \"$numberLong\": \"%start_timestamp%000\" } }, \"$lte\": { \"$date\": { \"$numberLong\": \"%end_timestamp%000\" } } } }" --out "D:\MongoDB_backup\202309\merge\%formatted_date%.json"

endlocal

导入数据

导入数据时可使用java方法调用bat脚本,传递导入文件的位置

java 调用bat 脚本并传递参数

public void testImport() throws IOException {
        // 备份文件地址
        String param1 = "D:\\MongoDB_backup\\202309\\merge\\20230920.json";
        // 要还原到的集合
        String param2 = "testMongodbUser5";
        // param1和param2可以根据实际需求传递,需要几个参数就传递几个参数
        ProcessBuilder processBuilder = new ProcessBuilder("C:\\Users\\LXD\\Desktop\\mongodbImport.bat", param1,param2);
        Process process = processBuilder.start();
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
@echo off
setlocal

:: 定义导入文件路径,%1为java调用传递的第一个参数
set "import_file=%1"

:: 定义目标数据库和集合名
set "database=test"
rem set "collection=testMongodbUser4"

:: 导入文件到 MongoDB   %2为java调用传递的第二个参数
mongoimport --db %database% --collection %2 --file %import_file%

echo import data to %database%-%2 success

endlocal
更多推荐

嵌入式:驱动开发 Day9

作业:通过platform总线驱动实现a.应用程序通过阻塞的io模型来读取number变量的值b.number是内核驱动中的一个变量c.number的值随着按键按下而改变(按键中断)例如number=0按下按键number=1,再次按下按键number=0d.在按下按键的时候需要同时将led1的状态取反e.驱动中需要编

树莓派使用Nginx 搭建轻量级网站远程访问

文章目录1.Nginx安装2.安装cpolar3.配置域名访问Nginx4.固定域名访问5.配置静态站点转载自cpolar极点云文章:树莓派使用Nginx搭建轻量级网站远程访问安装Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的Web服务器,可以用于托管网站或Web应用程序。相比其他Web服务器,

01_Bootstrap基础组件01

1什么是Bootstrap?Bootstrap,来自Twitter,是目前很受欢迎的前端框架。Bootstrap是基于HTML、CSS、JavaScript的,它简洁灵活,使Web开发更加快捷。它对HTML、CSS和JavaScript进行了封装,使它们使用起来更方便。我们只需要使用它已经设定好的类,或规则,即可快速应

[全家桶之SpringMVC]SpringMVC 的模块和结构

目录SpringMVC的模块Web模块WebMVC模块SpringMVC的结构SpringMVC的模块SpringMVC的模块主要包括以下几个:Web模块:这个模块提供了Spring对Web项目的支持,包括文件上传、异常处理、国际化、主题等功能。WebMVC模块:这个模块是SpringMVC的核心,它包含了前端控制器、

驱动开发--字符设备驱动的实现

一、字符设备驱动内部注册过程通过对register_chrdev内部的实现过程进行分析,其实注册字符设备驱动的过程就是下面几步:1.分配structcdev对象空间2.初始化structcdev对象3.注册cdev对象完成上面的三步,就完成了字符设备驱动的注册。二、通过字符设备驱动分步注册方式编写LED驱动,完成设备文

【LittleXi】第五章 Process API exercise

文章目录【LittleXi】第五章ProcessAPIexercise第五章(simulator)实验准备第五章(code)【LittleXi】第五章ProcessAPIexercise第五章(simulator)实验准备github下载对应代码https://github.com/remzi-arpacidussea

基于Python的微博舆论分析,微博情感分析可视化系统(V2.0)

简介Python基于微博的舆情分析,情感分析可视化系统微博舆情分析系统,项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。功能包括登陆注册用户管理热门事件展示舆情分析,包括舆情分析,情感分类,用户分布,关键词云图,热门帖子,热门评论排名舆情预警个人信息管理原文地址先后进行了数据获取和筛选存储,对存储后的

自然语言处理应用(三):微调BERT

微调BERT微调(Fine-tuning)BERT是指在预训练的BERT模型基础上,使用特定领域或任务相关的数据对其进行进一步训练以适应具体任务的需求。BERT(BidirectionalEncoderRepresentationsfromTransformers)是一种基于Transformer架构的深度双向预训练语

机器学习 day35(决策树)

决策树上图的数据集是一个特征值X采用分类值,即只取几个离散值,同时也是一个二元分类任务,即标签Y只有两个值上图为之前数据集对应的决策树,最顶层的节点称为根节点,椭圆形节点称为决策节点,矩形节点称为叶子节点决策树学习算法的工作是,在所有可能的决策树中,选择一个在训练集上能表现良好,并能很好的推广到新数据(即交叉验证集和测

CUDA小白 - NPP(9) 图像处理 Statistical Operations

cuda小白原始API链接NPPGPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》常见的NppStatus,可以看这里。本文主要介绍的是NPP的统计

今天开课,欢迎学习!公益课“14天学会统计学与SPSS”,课程结束赠送全套视频...

新一期的课程今天开课!来学习吧!我们精心整理的600页彩色纸质版教程就可以帮助你更好得掌握本课程!“14天学会医学统计学与SPSS”,是浙江中医药大学医学统计教研室、浙江省预防医学会卫生统计学专业委员会共同主持的公益网课!不是忽悠人的商业收费课程!高校公开课,免费的!自2021年起,浙江中医药大学医学统计教研室教研书主

热文推荐