我有一個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