Ich habe ein starkes Skript, das eine db sinkt und stellt die db aus einer vorhandenen Sicherung (SQL)Kann ich den Befehl mongorestore in einer groovigen Datei ausführen?
Sql sql = Sql.newInstance(dbSQLUrl, userName, password)
ich die erforderlichen Parameter alle bestanden und lief sql.execute()
wie unten,
sql.execute(
alter database dbName
set offline with rollback immediate
drop database dbName
)
sql.execute(
RESTORE DATABASE dbName
FROM disk = 'C:\Backups'
WITH REPLACE
)
All Der obige Code funktioniert einwandfrei. Ich muss dies auch für MongoDB implementieren. Gibt es ein Äquivalent zu sql.execute()
in Mongo, wo ich Mongo-Befehl wie mongorestore
in groovy Datei ausführen kann.
Für Mongo Ich habe den folgenden Code:
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()
Jetzt muss ich laufen/include den folgenden Befehl in meinem groovy Datei, mongorestore ~/backups/first_backup/
Gibt es eine Möglichkeit, dies erreichen kann?
Ich habe den folgenden Code, String command = "" "mongorestore $ dbBackUpPath" "" Process p = command.execute(), die basckup-db wird nicht erstellt, während wenn ich den folgenden Code in der Befehlszeile ausführen, mongorestore/home/backups/test funktioniert es gut. Ich sehe, dass die Test-DB wiederhergestellt wird. – Sharath
Haben Sie 'p.waitFor()' hinzugefügt? Sie müssen warten, bis der Befehl beendet ist. Um zu debuggen, fügen Sie 'println p.in.text + p.err.text' nach' p = command.execute() 'hinzu und sehen Sie, was der' mongorestore' gerade druckt. –
Mein Fehler Ich habe den Pfad falsch übergeben, \ home \ backups \ test anstelle von/home/backups/test. Es funktioniert jetzt gut. – Sharath