window bat脚本实现mongo集合批量导出导入功能

@echo off
::需要修改的地方,注意需要管理员权限才能执行
set collections=flink_resident_cursor,flink_session_buffer,flink_plate_session_buffer,flink_resident_plate_cursor,flink_face_session_buffer,flink_resident_face_cursor
set collectionsRemain=%collections%

set path=C://Program Files//MongoDB//Tools//100//bin//

::定义变量
set fromDbIp=192.168.60.204
set fromDbUser=root
set fromDbPwd=root
set fromDbName=efs

::定义变量
set toDbIp=127.0.0.1
set toDbUser=root
set toDbPwd=root
set toDbName=ams

cd %path%

:: %errorlevel%==0 上一条指令执行成功,%errorlevel%==1 上一条指令执行失败, delims=,表示以逗号作为分隔符,对remain字符串进行分割处理,tokens表示分段的方式,tokens=1*表示第一个分隔符;之前的作为一部分,剩下的(*表示)作为一部分。这两部分在循环体总可以用%%a表示第一部分,%%b表示第二部分。

:loop
for /f "tokens=1* delims=," %%a in ("%collectionsRemain%") do (
if exist %%a.json del %%a.json
mongoexport -h %fromDbIp% -u %fromDbUser% -p %fromDbPwd% -d %fromDbName% -c %%a -o %%a.json
if %errorlevel%==1 goto :end
mongoimport -h %toDbIp% -u %toDbUser% -p %toDbPwd% -d %toDbName% -c %%a --file %%a.json
if %errorlevel%==0 del %%a.json
echo %%a exec ...... 
set collectionsRemain=%%b
@echo.
@echo.
)

if defined collectionsRemain goto :loop

goto :end

:end
pause

你可能感兴趣的:(闲聊,linux,mongodb)