我可以在 groovy 文件中使用 运行 mongorestore 命令吗?
Can I run mongorestore command inside a groovy file?
我有一个 groovy 脚本,它删除数据库并从现有备份中恢复数据库 (SQL)
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()
的地方,我可以在其中 运行 Mongo 命令,例如 groovy 文件中的 mongorestore
。
对于Mongo我有以下代码:
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()
现在我需要在 groovy 文件中 run/include 以下命令,
mongorestore ~/backups/first_backup/
有什么方法可以实现吗?
简而言之,使用 MongoDB 驱动程序无法实现这一点。这些命令只能从命令行调用(即 MongoDB shell)。您可能需要将日期导出为 CSV 并以编程方式将数据导入 MongoDB,这会非常慢。
否则,您可能需要使用 Groovy 库执行命令。类似于下面的 Java 命令。
Runtime.getRuntime().exec("mongoimport -d -h <>..");
不确定这是执行所需操作的最有效方法,但您可以调用该命令并等待它完成,方法是将其添加到您的代码中:
String command = "mongorestore ${System.properties['user.home']}/backups/first_backup"
Process p = command.execute()
p.waitFor()
我有一个 groovy 脚本,它删除数据库并从现有备份中恢复数据库 (SQL)
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()
的地方,我可以在其中 运行 Mongo 命令,例如 groovy 文件中的 mongorestore
。
对于Mongo我有以下代码:
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()
现在我需要在 groovy 文件中 run/include 以下命令,
mongorestore ~/backups/first_backup/
有什么方法可以实现吗?
简而言之,使用 MongoDB 驱动程序无法实现这一点。这些命令只能从命令行调用(即 MongoDB shell)。您可能需要将日期导出为 CSV 并以编程方式将数据导入 MongoDB,这会非常慢。
否则,您可能需要使用 Groovy 库执行命令。类似于下面的 Java 命令。
Runtime.getRuntime().exec("mongoimport -d -h <>..");
不确定这是执行所需操作的最有效方法,但您可以调用该命令并等待它完成,方法是将其添加到您的代码中:
String command = "mongorestore ${System.properties['user.home']}/backups/first_backup"
Process p = command.execute()
p.waitFor()