我有一个Groovy脚本,删除一个数据库,并从现有的备份(SQL)恢复数据库我可以在groovy文件中运行mongorestore命令吗?
Sql sql = Sql.newInstance(dbSQLUrl, userName, password)
我通过了所有必需的参数和下面跑sql.execute()
,
sql.execute(
alter database dbName
set offline with rollback immediate
drop database dbName
)
sql.execute(
RESTORE DATABASE dbName
FROM disk = 'C:\Backups'
WITH REPLACE
)
所有上面的代码工作得很好。我也需要为MongoDB实现这个功能。在Mongo中是否有相当于sql.execute()
的地方,我可以在groovy文件中运行Mongo命令,如mongorestore
。
对于蒙戈我有以下代码:
List credentials = []
List servers = []
credentials.push(MongoCredential.createCredential(mongoUserName, mongoDBName, mongoPassword as char[]))
servers.push(new ServerAddress(mongoHost, mongoPort))
GMongoClient mongoClient = new GMongoClient(servers,credentials)
DB mongoDB = mongoClient.getDB(mongoDBName)
mongoDB.dropDatabase()
现在我需要运行/包括我的常规文件中下面的命令, mongorestore ~/backups/first_backup/
有没有什么办法可以做到这一点?
我有下面的代码,String command =“”“mongorestore $ dbBackUpPath”“”Process p = command.execute(),basckup数据库没有创建,而当我在命令行运行下面的代码,mongorestore/home/backups /测试它运作良好。我看到测试数据库正在恢复。 – Sharath
你添加了'p.waitFor()'吗?您需要一些方法来等待该命令完成。为了调试,在'p = command.execute()'后面加上'println p.in.text + p.err.text',看看'mongorestore'输出的是什么。 –
我的错误是我错误地通过路径\ home \ backsups \ test而不是/ home/backups/test。现在它工作正常。 – Sharath